Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PDN-0185 Insufficient width to add straps on layer#3539

Unanswered
philiprbrenan asked this question inHelp (Q&A)
Discussion options

When compiling:

module find_verilog(stop, clock);          input                     clock;         output                    stop;          integer  step;                           always @ (posedge clock) begin                step <= 1;  end // Alwaysendmodule

With:

#!/usr/bin/env python3from siliconcompiler import Chip                                  from siliconcompiler.targets import freepdk45_demoif __name__ == "__main__":    chip = Chip('find_verilog')                                       chip.input('find_verilog.v')                                      chip.set('design', 'find_verilog')                                chip.use(freepdk45_demo)                                          chip.set('option', 'remote', False)                               chip.set('option', 'nodisplay', True)                             chip.set('option', 'loglevel', 'warning')                         chip.set('option', 'clean', True)                                 chip.run()                                                        chip.summary()    chip.snapshot()

I get:

| ERROR   | job0 | floorplan.power_grid | 0 | 215: [ERROR PDN-0185] Insufficient width (1.52 um) to add straps on layer metal4 in grid "grid" with total strap width 1.2 um and offset 2.0 um

Plese tell me how I can overcome this problem?

You must be logged in to vote

Replies: 4 comments 2 replies

Comment options

The error stems from the power grid definitions, which has some ability to adapt, but in this case, the circuit it likely too small to be (or has no logic generated). You can specify a floorplan withcontraint,outline to increase the size of the block

You must be logged in to vote
0 replies
Comment options

The following minimal design does work as long as the following constraints are
set otherwise theERROR PDN-0185 Insufficient width to add straps message
occurs.

    chip.set('constraint', 'outline', [(0, 0), (4, 4)])    chip.set('constraint', 'density', 8)

In particular it is sensitive to density: a density of9 fails whereas8 succeeds.

Might it be worth automating the application of these constraints to avoid the inevitable
confusion that has occurred and will continue to occur when new users try to synthesize
a basic design?

As things stand, might not new users think they will always have to provide the outline
and density as they grow their design because they will not know, other than through
occasional experimentation, whether Silicon Compiler can perform this important task
for them?

Minimal design:

module find_verilog(in, out, clock);                                               input                     in;                                                    input                     clock;                                              output reg                out;                                                                                                                             always @ (posedge clock) begin                             out <= in;  end endmodule

Compiled successfully with:

#!/usr/bin/env python3from siliconcompiler import Chip                                 from siliconcompiler.targets import freepdk45_demoif __name__ == "__main__":    chip = Chip('find_verilog')                                               chip.input('find_verilog.v')                                              chip.set('design', 'find_verilog')                                      chip.use(freepdk45_demo)                                             chip.clock('clock', period=1)                                            chip.set('option', 'remote', False)                                   chip.set('option', 'nodisplay', True)                                chip.set('option', 'loglevel', 'warning')                           chip.set('option', 'clean', True)                                        chip.set('constraint', 'outline', [(0, 0), (4, 4)])    chip.set('constraint', 'density', 8)    chip.run()                                                                     chip.summary()    chip.snapshot()
You must be logged in to vote
1 reply
@gadfort
Comment options

@philiprbrenan The issue here is that the design is so trivial as to cause issues. The powergrid scripts are the culprit here, they expect a minimum size, so that is something we could consider fixing over in lambdapdk (which is where the power grid scripts reside).

Comment options

Conversely, this does work without the outline and density constraints:

module find_verilog(in, out, clock);             input        [7:0]              in;            input                         clock;           output reg   [7:0]             out;                                                           always @ (posedge clock) begin                      out <= in;  end // Alwaysendmodule

Specifying 4 bits as the input width does require the outline and density constraints to compile successfully.

You must be logged in to vote
0 replies
Comment options

Once the GDS is generated with this minimal design, how to create a padring? Any specific help would be highly appreciated.

You must be logged in to vote
1 reply
@aolofsson
Comment options

please open a separate issue for this

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Labels
None yet
4 participants
@philiprbrenan@aolofsson@gadfort@arfanghani

[8]ページ先頭

©2009-2025 Movatter.jp