top of page
guipotedpicir

Difference between flat and hierarchical netlist 1: A comparison of synthesis, simulation, and debug



In a "flat" design, only primitives are instanced. Hierarchical designs can be recursively "exploded" ("flattened") by creating a new copy (with a new name) of each definition each time it is used. If the design is highly folded, expanding it like this will result in a much larger netlist database, but preserves the hierarchy dependencies. Given a hierarchical netlist, the list of instance names in a path from the root definition to a primitive instance specifies the single unique path to that primitive. The paths to every primitive, taken together, comprise a large but flat netlist that is exactly equivalent to the compact hierarchical version.




difference between flat and hierarchical netlist 1



Backannotation is data that could be added to a hierarchical netlist. Usually they are kept separate from the netlist, because several such alternate sets of data could be applied to a single netlist. These data may have been extracted from a physical design, and might provide extra information for more accurate simulations. Usually the data are composed of a hierarchical path and a piece of data for that primitive or finding the values of RC delay due to interconnection.


The commands flatten any hierarchical netlist from the active window and put the result into a new window. The Hierarchical Names command generates a flattened netlist file with comments describing hierarchy transformation. Device and net names in the flat netlist hold information about the full path from the top level of the circuit hierarchy to the node. The Numbered Names command generates a flattened netlist with automatically-generated numbered names of devices and nets.


During ungrouping (flattening) a hierarchical design, there are nets that need to be merged. The name of the resulting net from the merge will be the name in the highest level of the design hierarchy.


As well as creating logical connectivity within a schematic sheet, there are also objects for creating logical connectivity between schematic sheets. The way this connectivity is created will depend on how you structure your schematic: either as a flat design or as a hierarchical design. More about this below.


If the design does not fit onto a single schematic sheet, it can be spread over multiple sheets. There are two distinct models for organizing and creating connectivity in a multi-sheet schematic: either as a flat design, which you can think of as one large schematic sheet that has been cut up into a number of smaller sheets; or as a hierarchical design, where the sheets are linked in a grandparent-parent-child type structure.


So just what determines if a design is flat or hierarchical? This is done by setting the Net Identifier Scope to define how you want the sheet-to-sheet connectivity to be created. Set this in the Options tab of the Project Options dialog.


In a flat design, the connections between the sheets can be created by Ports, Offsheet Connectors, Power Ports, and Net Labels, as shown in the image above with the magnifying glass. The recommended approach is to use Net Labels within each sheet and Ports to connect between sheets. Ports offer more features than Off-Sheet Connectors, including the ability to add Port Cross References, which adds a SheetName[GridReference] to each port, referring to a matching port on another sheet, as shown in the image below.


A design is referred to as hierarchical when the sheet-to-sheet connectivity is from a Sheet Symbol down to the child sheet referenced by that Sheet Symbol. At the net level, the connectivity is created between a Sheet Entry in that Sheet Symbol and a Port with the same name as the sheet entry on the child sheet. This type of connectivity is also referred to as vertical connectivity since the sheet-to-sheet connectivity that is created is only up and down between a parent sheet and its child sheet.


A design is hierarchical when the sheet-to-sheet connectivity is only between Sheet Entries on the parent sheet and matching Ports on the child sheet. This connective behavior is defined by setting the Net Identifier Scope to Automatic, Hierarchical or Strict Hierarchical.


When you list blobs from your code, you can specify a number of options to manage how results are returned from Azure Storage. You can specify the number of results to return in each set of results, and then retrieve the subsequent sets. You can specify a prefix to return blobs whose names begin with that character or string. And you can list blobs in a flat listing structure, or hierarchically. A hierarchical listing returns blobs as though they were organized into folders.


Blobs in Azure Storage are organized in a flat paradigm, rather than a hierarchical paradigm (like a classic file system). However, you can organize blobs into virtual directories in order to mimic a folder structure. A virtual directory forms part of the name of the blob and is indicated by the delimiter character.


The use of hierarchical design methods is becoming almost essential as device gate counts continue to increase well into the millions. The use of a traditional flat design process is rapidly becoming unfeasible. Although it is almost being forced upon engineers, the emergence of hierarchy management for deep sub-micron and other complex devices has numerous significant benefits for the design, the design team and the end customer.


A further reason to adopt hierarchy management is to ease the use of intellectual property (IP) blocks. It is far easier to insert an IP block into a hierarchical modular structure than to try and fit it into a flat design.


One of the advantages of hierarchical design over flat design is that it is better able to overcome these problems and achieve successful timing closure. Companies like AMIS use synthesis tools with built in placement algorithms to give accurate timing predictions of the placed and routed design at block level. After routing, the block is characterized for boundary conditions. Higher-level timing driven layout uses timing models for blocks to achieve complete timing closure.


The solution is a 'correct by construction' approach that is applicable to both flat and hierarchical designs. A further independent analysis and repair step validates the prevention steps and deals with any remaining problems. The methodologies for next generation designs are likely to incorporate algorithms that prevent the introduction of signal integrity problems in the first place.


Differences in clock delay or 'skew' between various blocks of the physical layout are inevitable in the initial layout of a bottom up hierarchical design. Clock tree synthesis is used to balance the skew between registers throughout the hierarchy and overcome this problem.


Each pin of the sheet symbol just created, must correspond to a labelcalled hierarchical Label in the sub-sheet. Hierarchical labels aresimilar to labels, but they provide connections between sub-sheet androot sheet. The graphical representation of the two complementary labels(pin and HLabel) is similar. Hierarchical labels creation is made withthe tool.


To identify a component in a netlist and therefore on a board, thetimestamp reference is used as unique for each component. However KiCadprovides an auxiliary way to identify a component which is thecorresponding footprint on the board. This allows the re-annotation ofcomponents in a schematic project and does not loose the link betweenthe component and its footprint.


If your Perl is quite a bit better than mine, you might like to take a look at Wilson Snyder's Verilog-manipulation tools at www.veripool.org/wiki/verilog-perlNetlists are often created using a fairly simple subset ofVerilog, so it may be possible to write a custom parser thatwill construct the hierarchy and write it out again in flatorganization. For netlists generated by synthesis tools,that may be fairly straightforward. Some features of Verilog may make it harder, though - defparam is an obvioustrip-wire.-- Jonathan Bromley


Hi Nikolaos,Do you know if any of them have the necessary options for hierarchyflattening? I looked at the Icarus FPGA target, but it doesn't occurvery useful. My task is not to synthesize, but to generate a flatnetlist in order to manipulate it with "stuck-at-values" on selectednets (the big task is to make a measure for test coverage).Best regards,Kenneth


Each of these approaches involves multiple data hand-offs between tools at different stages of the flow. Design Compiler can represent the results of a synthesis in four ways: as a gate netlist; a block abstract; an extracted timing model (ETM); or a black box. The design requirements of the full chip will drive the choice of block representation for the top-level synthesis in a hierarchical implementation flow.


How would designers use ETMs in hierarchical design? The first step is to define a block at RTL and run it through synthesis and block place and route. The output of this is a fully implemented design described in a Verilog netlist, SDC, UPF and parasitic files. These are used as an input to PrimeTime, which is run with the command extract_model to create a Liberty version of the design (as a block.lib). The block file is then used as an input to the top-level synthesis process, alongside the top-level and block-level UPFs, SDC and RTL files. The output of the synthesis is a top-level model, which is used, along with the block ETM file, as an input to top-level place and route.


i have a cadence schematic with hierarchy. i am able to run the si netlister in batch mode at the command line to produce a hierarchical verilog netlist. i was wondering if anyone knows if it is possible to produce a flat verilog netlist. i have tried various options but can't seem to get it to work. searches on google seem to give mixed opinions of whether this is possible or not.


finally was able to get a straight answer from cadence. the si netlist cannot create a flat verilog netlist unfortunately. many have requested this feature be added, but it is not being actively worked on. 2ff7e9595c


0 views0 comments

Recent Posts

See All

댓글


bottom of page