Results 1 to 7 of 7

Thread: little change - big mess

  1. #1
    Join Date
    May 2009
    Posts
    17
    Rep Power
    0

    Default little change - big mess

    Hi,

    I worked for months with Quartus II and a Cyclone II device without getting big trouble. But since a few weeks I'm working on a new part of the design and I can't get this thing stable. I use modules I wrote long time ago an that worked well so far. But now, combinded with new modules (or slightly modified old ones) they do weird things - in simulation and on the hardware. The new design parts work well without the old ones (in simulation). The problem appears only in combination.

    I tried a few things such as play with the Analysis and Synthesis Settings (restructure multiplexers = on/off etc.) or use another implementation for my state machines. Most of these things changed the behavior in any way. But the change that helped the one module to work in most cases had a negative effect on another module.

    So how can I ever be sure that a part of my design, checked for proper operation, will work in future after adding new functionatity to the design.
    Is the described behavior revealing of basic design mistakes?
    Is it possible to separate a certain module, to define settings only for this one? Could that solve the problem at all?

    Many thanks in advance!

  2. #2
    Join Date
    Jun 2007
    Posts
    977
    Rep Power
    1

    Default Re: little change - big mess

    Quote Originally Posted by diezahnfee View Post
    Hi,

    I worked for months with Quartus II and a Cyclone II device without getting big trouble. But since a few weeks I'm working on a new part of the design and I can't get this thing stable. I use modules I wrote long time ago an that worked well so far. But now, combinded with new modules (or slightly modified old ones) they do weird things - in simulation and on the hardware. The new design parts work well without the old ones (in simulation). The problem appears only in combination.

    I tried a few things such as play with the Analysis and Synthesis Settings (restructure multiplexers = on/off etc.) or use another implementation for my state machines. Most of these things changed the behavior in any way. But the change that helped the one module to work in most cases had a negative effect on another module.

    So how can I ever be sure that a part of my design, checked for proper operation, will work in future after adding new functionatity to the design.
    Is the described behavior revealing of basic design mistakes?
    Is it possible to separate a certain module, to define settings only for this one? Could that solve the problem at all?

    Many thanks in advance!

    Hi,

    what kind of simulation do mean ? RTL or gatelevel , only functional or with timing? What kind of simualtion tool are you using ?

    Kind regards

    GPK

  3. #3
    Join Date
    Aug 2007
    Posts
    149
    Rep Power
    1

    Default Re: little change - big mess

    Too little information to tell. Is the design well constrainted? Do you get any warnings in the compilation?

    Hua

  4. #4
    Join Date
    Mar 2007
    Posts
    8
    Rep Power
    1

    Default Re: little change - big mess

    Quote Originally Posted by diezahnfee View Post
    Hi,

    I worked for months with Quartus II and a Cyclone II device without getting big trouble. But since a few weeks I'm working on a new part of the design and I can't get this thing stable. I use modules I wrote long time ago an that worked well so far. But now, combinded with new modules (or slightly modified old ones) they do weird things - in simulation and on the hardware. The new design parts work well without the old ones (in simulation). The problem appears only in combination.
    After creating a new wrapper design with some previously verified blocks, and some new unverified blocks, make sure this works correctly in functional simulation. Given the description, I tend to think that even though your blocks are working well in isolation, when interfaced together, there are some issues that are causing functional problems.

    Changing settings in Quartus II (or in any other EDA tool for that matter) can help you only in implementation, but functionally the design has to be correct to start with.

  5. #5
    Join Date
    Mar 2007
    Posts
    1,891
    Rep Power
    1

    Default Re: little change - big mess

    You've got a problem in the design, and I would stay away from randomly changing settings and seeing if it works. Very seldom does that help, and worst case, it works today but you don't know why, and the problem crops up again. I would first cover the things you absolutely should be doing - functional simulation, static timing analysis(core and I/O should be constrained) and going through all the messages. You could also run the Design Assistant.
    At that point, it's worth the time to roll-up your sleeves and do some low-level debug. SignalTap is almost a must, or possibly SignalProbe/LogicAnalyzer Interface. You need to get in and see what's failure, and once you diagnose it, can you determine the best way to fix it. I can't tell how many times I've seen designers waste more time over the long run by trying to go for a quick fix.
    Finally, the most common culprit is something timing related, either an unconstrained path or an incorrectly constrained path. But if you feel you've already constrained the design, then basic debug is the way to go.

  6. #6
    Join Date
    May 2009
    Posts
    17
    Rep Power
    0

    Default Re: little change - big mess

    Thanks for the fast reply!

    @ pletz
    I'm using the Quartus II Simulator tool and I did timing simulations.

    @ Hua
    Yes I got some warnings. But none of them dangerous.

    @ Rysc
    I'm afraid you are right. Low level debugging will be necessary.

    The Design Assistent finds "Combinational logic used as a reset signal" in one case. I will fix that.

    Functional simulation shows in principle the correct behavior except for one failure. But this one does not appear in timing simulation.

    The results of Static Timing Analysis seem to be uncritical. But if my constraints are wrong this is worth nothing. Do I have to constrain my design using the TimeQuest Timing Analyzer? Till now I made pin assignments using the pin planner and specified my clocks in the individual clocks settings box of the Classic Timing Analyzer - and that worked so far. If this is all I have to do the next task is search and look at the failing signals (using the SignalProbe/LogicAnalyzer Interface approach because I can't use SignalTap with my Web Edition license). If not I have to concentrate on constraining my design at first. Is there any usefull document available that tells how to constrain correct?

    Kind regards
    Jasmin

  7. #7
    Join Date
    Mar 2007
    Posts
    1,891
    Rep Power
    1

    Default Re: little change - big mess

    I don't have links to examples, but there's a decent amount of documentation on the web, with some searching. If you're not an expert at the Classic Timing Analyzer, I would recommend using TimeQuest just becaue it's the analyzer of the future(i.e. if you're going to spend time, do it with that). It also gives you more tools to analyze specific paths.

    If your design is a single clock coming in(and maybe a PLL), then internal timing is probably not a problem. (Any gated clocks?) I/O is interfaces are where timing constraints are the most critical(but also the most difficult to do). Note that you can do a combination of both, i.e. add some debug logic(sometimes it's not too hard to add some checking logic inside your own code and bring it out to SignalProbe. If the data passes, then you know that interface is all right and you move on. Kind of do a high-level search on where the data is bad, and then start narrowing down from there. Once you have a general idea, then start constraining that I/O first, or if it's not a timing issue, dive deeper with debug.

Similar Threads

  1. quartus layout mess after sopc update
    By chopin1998 in forum General Discussion Forum
    Replies: 2
    Last Post: June 26th, 2009, 04:42 PM
  2. DDR2 controller: mess with different Q. versions
    By flintstone in forum IP Discussion
    Replies: 4
    Last Post: June 24th, 2009, 08:55 PM
  3. Why can't change my email ?
    By mountain8848 in forum General Discussion Forum
    Replies: 0
    Last Post: January 22nd, 2005, 06:36 PM
  4. Hpw do I change the startup adr of an app
    By GreateWhite.DK in forum General Software Forum
    Replies: 13
    Last Post: September 21st, 2004, 05:04 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •