Jelmer Lap
10/28/2024, 9:35 AMJelmer Lap
10/28/2024, 10:20 AMMitch Bailey
10/28/2024, 12:09 PMJelmer Lap
10/28/2024, 1:20 PMMitch Bailey
10/28/2024, 4:59 PMJelmer Lap
10/30/2024, 10:35 AMMitch Bailey
10/30/2024, 11:17 AMJelmer Lap
10/30/2024, 12:13 PM[ERROR DRT-0073] No access point for nsa0/syn_addr[0].
Jelmer Lap
10/30/2024, 12:14 PMJelmer Lap
10/30/2024, 12:15 PM-pinonly
Jelmer Lap
10/30/2024, 12:17 PMMitch Bailey
10/30/2024, 12:51 PM-pinonly
option requires that the pins go to the border of the cells and the -hide
option requires a cell boundary (FIXED_BBOX
property).
Are the XOR issues between klayout gds and magic gds or with the caravel integration?Jelmer Lap
10/30/2024, 1:14 PMmake user-project-wrapper
it gives XOR issues between the klayout GDS and the magic GDSJelmer Lap
10/30/2024, 1:15 PMJelmer Lap
10/30/2024, 1:16 PMMitch Bailey
10/30/2024, 2:31 PMWhen runningThis is slightly concerning. Can you share more detail about what mismatches occur so we can figure out why? Is this a fatal error?it gives XOR issues between the klayout GDS and the magic GDS.make user-project-wrapper
Jelmer Lap
10/30/2024, 5:46 PMMitch Bailey
10/30/2024, 5:52 PMJelmer Lap
10/30/2024, 6:01 PMJelmer Lap
10/30/2024, 6:03 PM"FP_PDN_MACRO_HOOKS": [
"nn0 vccd1 vssd1 vccd1 vssd1",
"nsa0 vccd1 vssd1 dVDD dGND",
"nsa0 vdda1 vssa1 aVDD aGND"
],
With
array nsa0 (
`ifdef USE_POWER_PINS
.dGND(vssd1),
.dVDD(vccd1),
.aGND(vssa1),
.aVDD(vdda1),
`endif
.CLK(wb_clk_i),
.syn_addr(nn_ids)
);
In the verilog file of the wrapper. But when I run the wrapper it stops on LVS because it says it can't match some pinsJelmer Lap
10/30/2024, 6:05 PMJelmer Lap
10/30/2024, 6:05 PMMitch Bailey
10/30/2024, 10:42 PMnn0 vccd1 vssd1 vccd1 vssd1 nsa0 vccd1 vssd1 dVDD dGND nsa0 vdda1 vssa1 aVDD aGND
but what you need is
nn0 vccd1 vssd1 vccd1 vssd1, nsa0 vccd1 vssd1 dVDD dGND, nsa0 vdda1 vssa1 aVDD aGND
The rather unintuitive solution is to include a ,
before the "
like this
"FP_PDN_MACRO_HOOKS": [
"nn0 vccd1 vssd1 vccd1 vssd1,",
"nsa0 vccd1 vssd1 dVDD dGND,",
"nsa0 vdda1 vssa1 aVDD aGND"
],
Jelmer Lap
10/31/2024, 8:12 AMCircuit 1: user_project_wrapper |Circuit 2: user_project_wrapper
-------------------------------------------|-------------------------------------------
wishbone_nn (1) |wishbone_nn (1)
neuron_synapse_array_with_input_output_log |neuron_synapse_array_with_input_output_log
Number of devices: 2 |Number of devices: 2
Number of nets: 155 **Mismatch** |Number of nets: 153 **Mismatch**
---------------------------------------------------------------------------------------
NET mismatches: Class fragments follow (with fanout counts):
Circuit 1: user_project_wrapper |Circuit 2: user_project_wrapper
---------------------------------------------------------------------------------------
Net: vccd1 |Net: vccd1
wishbone_nn/vccd1 = 1 | wishbone_nn/vccd1 = 1
| array/dVDD = 1
|
Net: vssd1 |Net: vssd1
wishbone_nn/vssd1 = 1 | wishbone_nn/vssd1 = 1
| array/dGND = 1
|
Net: nsa0/dVDD |(no matching net)
array/dVDD = 1 |
|
Net: nsa0/dGND |(no matching net)
array/dGND = 1 |
---------------------------------------------------------------------------------------
Netlists do not match.
And:
(no matching pin) |vdda1
(no matching pin) |vssa1
vdda1 |(no matching pin)
vssa1 |(no matching pin)
Do you have any idea what could cause this?Jelmer Lap
10/31/2024, 8:13 AMMitch Bailey
10/31/2024, 8:23 AM"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
Otherwise, check your pdn log for messages.
Look at the lef for nsa0
and check that the power rails are accessible for the power grid you are using. If this is the top level and you’re not using power rings, then the macro lef’s should not have met5 obstruction and should have vertical met4 power pins that go from the top of the macro to the bottom.Jelmer Lap
10/31/2024, 8:34 AM[WARNING PDN-0110] No via inserted between met4 and met5 at (387.5700, 574.8950) - (390.6700, 576.0300) on vssd1
[WARNING PDN-0110] No via inserted between met4 and met5 at (424.7700, 250.1300) - (427.8700, 250.8950) on vssd2
These are from the generated PDN not connecting as the macro has no met5 obstruction but it does have met4 obstruction as can be seen in the following image:Jelmer Lap
10/31/2024, 8:36 AMJelmer Lap
10/31/2024, 8:56 AMlvs_config
. Could that be the case here as well?Mitch Bailey
10/31/2024, 12:07 PMpdn.tcl
to connect met5 to met2 (or met4 to met3). To connect met5 to met2 the intermediary met3 and met4 also need to be unobstructed.
The lvs_config.json
file is used for precheck’s LVS and not for openlane’s abstract LVS.Jelmer Lap
10/31/2024, 1:19 PMMitch Bailey
10/31/2024, 2:11 PMJelmer Lap
10/31/2024, 2:20 PMJelmer Lap
10/31/2024, 4:58 PMJelmer Lap
10/31/2024, 4:58 PMMitch Bailey
11/01/2024, 2:43 AMRoel Jordans
11/01/2024, 8:39 AMRoel Jordans
11/01/2024, 9:44 AMRoel Jordans
11/01/2024, 9:45 AMRoel Jordans
11/01/2024, 9:46 AMJelmer Lap
11/01/2024, 10:01 AMMitch Bailey
11/01/2024, 10:28 AMJelmer Lap
11/05/2024, 12:05 PMinout [MPRJ_IO_PADS-10:0] analog_io
Mitch Bailey
11/05/2024, 12:54 PMWhere can I find information on how to configure the harnass’ gpio pins?
verilog/rtl/user_defines.v
The macro placed has some analog GPIO that is routed to the pins already. But what do I need to set in the defines?Not sure what you’re asking. The gpio defaults for analog are
GPIO_MODE_MGMT_STD_ANALOG
or GPIO_MODE_USER_STD_ANALOG
they are functionally equivalent.
And should I set io_oeb to a specific value?For gpio configured to used for analog signals, the logic level of
io_oeb
is irrelevant. I recommend tying it either high or low to avoid possible leak current due to Hi--Z inputs.
Also should I not route to pins analog_io[6:0] or is that already taken care of by the -10 in the definition:This might be a little tricky. There are 38 gpio pads in the caravel chip framework. The first 7 and the last 2 are too far away from the user area to be useful as analog connections. So gpio 0~6 and gpio36-37 do not have an analog connection to the user area.inout [MPRJ_IO_PADS-10:0] analog_io
analog_io[0]
is connected to gpio 7 (along with io_in[7]
, io_out[7]
and io_oeb[7]
. Similarly, analog_io[28]
is connected to gpio 35 (along with io_in[35]
, io_out[35]
and io_oeb[35]
).
It is probably best to avoid using the same gpio for both digital and analog signal I/O.