https://open-source-silicon.dev logo
#sky130
Title
# sky130
j

Junaid amjad

12/30/2021, 7:41 AM
All previous steps are completed successfully but I'm getting error at routing, can anyone please guide me about this? Attached are the error and config.tcl screenshots
h

Hadir Khan

12/30/2021, 7:49 AM
What is your caravel-lite commit?
v

Vijayan Krishnan

12/30/2021, 8:01 AM
share runs/run1/openroad_issue_reproducible tar file
seems you're running estimate_parasitics -global_routing without running global_route
j

Junaid amjad

12/30/2021, 9:25 AM
@Vijayan Krishnan Sir kindly check it
v

Vijayan Krishnan

12/30/2021, 9:51 AM
file format not support what you shared. share as zip or tar file
j

Junaid amjad

12/30/2021, 9:53 AM
@Vijayan Krishnan Sorry for inconvenience
This file is fine or not? @Vijayan Krishnan
v

Vijayan Krishnan

12/30/2021, 10:07 AM
able to get same issue
j

Junaid amjad

12/30/2021, 10:09 AM
@Vijayan Krishnan Check now
@Hadir Khan right now I'm just running the openlane flow (not caravel flow)
1
v

Vijayan Krishnan

12/30/2021, 10:12 AM
am able to reproduce your issue at my end
working on that.
can you share your config.tcl, so it will be easy to find what are additional settings you added
j

Junaid amjad

12/30/2021, 11:53 AM
BTW I have attached a screenshot of config.tcl @Vijayan Krishnan But let me send you the complete file as well
I really appreciate your time @Vijayan Krishnan
I'm stuck at routing for like now two days
I'm trying different variables at different steps but it's not working
@Vijayan Krishnan
v

Vijayan Krishnan

12/30/2021, 12:01 PM
set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) 0 add this in config.tcl and try once
j

Junaid amjad

12/30/2021, 12:29 PM
Now getting this error at routing @Vijayan Krishnan
v

Vijayan Krishnan

12/30/2021, 12:40 PM
Copy code
# User config
set ::env(DESIGN_NAME) main

# Change if needed
set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/*.v]

# Fill this
set ::env(CLOCK_PERIOD) "100"
set ::env(CLOCK_PORT) "clk"
set ::env(SYNTH_READ_BLACKBOX_LIB) 1
set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
set ::env(FP_SIZING) absolute
set ::env(DIE_AREA) "0 0 2920 3520"
set ::env(RUN_CVC) 0

set filename $::env(DESIGN_DIR)/$::env(PDK)_$::env(STD_CELL_LIBRARY)_config.tcl
if { [file exists $filename] == 1} {
	source $filename
}
j

Junaid amjad

12/30/2021, 12:40 PM
@Vijayan Krishnan If you have time can you take a look at above my repo and guide me about it like which variables should I use to run the flow
v

Vijayan Krishnan

12/30/2021, 12:41 PM
try this config.tcl once and let me know
which openlane version are you using?
j

Junaid amjad

12/30/2021, 12:44 PM
I just installed it a week ago tbh I don't know which version is this
but I think this must be the latest bcz I installed just a week ago
v

Vijayan Krishnan

12/30/2021, 12:45 PM
in the repo link which is your top design
j

Junaid amjad

12/30/2021, 12:46 PM
top_level.v
v

Vijayan Krishnan

12/30/2021, 12:46 PM
i'm updating my openlane repo now. Update you once i check it
j

Junaid amjad

12/30/2021, 12:47 PM
In instruction_memory.v I read machine code from .mem file so if you will not add that file it will give error
let me send you instruction_memory.v file with some hard code machine codes
@Vijayan Krishnan you can use this
v

Vijayan Krishnan

12/30/2021, 12:51 PM
👍
j

Junaid amjad

12/30/2021, 12:57 PM
getting same estimating parasitic error with your config.tcl as well
v

Vijayan Krishnan

12/30/2021, 1:23 PM
11. Executing Verilog-2005 frontend: /openlane/designs/risc32_scp/src/Controller.v /openlane/designs/risc32_scp/src/Controller.sv2v.v12 ERROR: syntax error, unexpected TOK_CHECKER, expecting TOK_ID or '#' [ERROR]: during executing: "yosys -c /openlane/scripts/yosys/synth.tcl -l /openlane/designs/risc32_scp/runs/1strun/logs/synthesis/1-synthesis.log |& tee >&@stdout"
facing issue at synthesis itself
j

Junaid amjad

12/30/2021, 1:24 PM
let me send you updated file
use this file, although it does not have any syntax error earlier as well but I don't know why it gave this syntax error
but with this file you will not get this syntax error @Vijayan Krishnan
v

Vijayan Krishnan

12/30/2021, 1:54 PM
I'm not able to get same error with the repo.
Copy code
config: /openlane/scripts/openroad/pdn_cfg.tcl
[ERROR PDN-0085] Pitch 3.6799999999999997 specified for layer met4 is less than 2 x (width + spacing) (width=3.0, spacing=1.84).
Error: pdn_cfg.tcl, 39 PDN-0085
j

Junaid amjad

12/30/2021, 2:03 PM
so noe what is this error?
and can you share your config.tcl
v

Vijayan Krishnan

12/30/2021, 2:11 PM
# Change if needed set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/*.v] # Fill this set ::env(CLOCK_PERIOD) "10.0" set ::env(CLOCK_PORT) "clk" set filename $::env(DESIGN_DIR)/$::env(PDK)_$::env(STD_CELL_LIBRARY)_config.tcl if { [file exists $filename] == 1} { source $filename } set ::env(SYNTH_READ_BLACKBOX_LIB) 1 set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS" #set ::env(FP_SIZING) absolute #set ::env(DIE_AREA) "0 0 2920 3520" set ::env(RUN_CVC) 0 set ::env(FP_PDN_CORE_RING) 1 set ::env(FP_PDN_CORE_RING_VWIDTH) 3 set ::env(FP_PDN_CORE_RING_HWIDTH) $::env(FP_PDN_CORE_RING_VWIDTH) set ::env(FP_PDN_CORE_RING_VOFFSET) 14 set ::env(FP_PDN_CORE_RING_HOFFSET) $::env(FP_PDN_CORE_RING_VOFFSET) set ::env(FP_PDN_CORE_RING_VSPACING) 1.7 set ::env(FP_PDN_CORE_RING_HSPACING) $::env(FP_PDN_CORE_RING_VSPACING) set ::env(FP_PDN_VWIDTH) 3 set ::env(FP_PDN_HWIDTH) 3 set ::env(FP_PDN_VOFFSET) 5 set ::env(FP_PDN_HOFFSET) $::env(FP_PDN_VOFFSET) set ::env(FP_PDN_VPITCH) 180 set ::env(FP_PDN_HPITCH) $::env(FP_PDN_VPITCH) set ::env(FP_PDN_VSPACING) [expr 5*$::env(FP_PDN_CORE_RING_VWIDTH)] set ::env(FP_PDN_HSPACING) [expr 5*$::env(FP_PDN_CORE_RING_HWIDTH)] set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}] set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}] set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS" set ::env(FP_PDN_CHECK_NODES) 0
seems i'm running wrong repo of verilog source code. zero instance found from the top file you gave. Please provide right src zip file
j

Junaid amjad

12/30/2021, 2:38 PM
source repo is upto date
there might be some other issues
v

Vijayan Krishnan

12/30/2021, 2:42 PM
Copy code
30. Printing statistics.

=== risc32_scp ===

   Number of wires:                  2
   Number of wire bits:              2
   Number of public wires:           2
   Number of public wire bits:       2
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                  0
no cells found from your verilog code. I just changed top module name main to risc32_scp
j

Junaid amjad

12/30/2021, 2:45 PM
so what does this mean?
like my verilog files are wrong?
v

Vijayan Krishnan

12/30/2021, 2:48 PM
can you share your runs/logs/synthesis/1_synthesis.log
j

Junaid amjad

12/30/2021, 2:50 PM
1-synthesis.log
v

Vijayan Krishnan

12/30/2021, 2:51 PM
same in your end aslo
Copy code
Number of wires:                  2
   Number of wire bits:              2
   Number of public wires:           2
   Number of public wire bits:       2
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                  0
j

Junaid amjad

12/30/2021, 2:53 PM
it is tested design through vivado
i have syhthesised it using vivado and it's fine
what do you think issue might be?
bcz it's a tested design
ok so what can you infer through errors which you are getting during flow?
all files are completely in verilog
v

Vijayan Krishnan

12/30/2021, 2:58 PM
using the repo source file, zero instance used, so tool not doing any placement
first time am seeing this error. Raise github issue, some one will guide you
j

Junaid amjad

12/30/2021, 3:00 PM
BTW you are purely backend engineer?
v

Vijayan Krishnan

12/30/2021, 3:00 PM
yes
j

Junaid amjad

12/30/2021, 3:01 PM
you have also happened to work on cadence tools?
can you give me your email id bcz I have couple of other desighns as well like 5 stage pipeline and I'm also implementing some peripherals as well so will you be willing to help me with them if I need any?
v

Vijayan Krishnan

12/30/2021, 3:05 PM
you can DM here itself or raise github, other experts will help you
j

Junaid amjad

12/30/2021, 3:14 PM
ok can you share some backend resources for beginners
like there is almost nothing available when it comes to backend
v

Vijayan Krishnan

12/30/2021, 3:17 PM
j

Junaid amjad

12/30/2021, 3:20 PM
ok I really appreciate your time,
thank you so much
I try to find out like what is the issue in verilog files
v

Vijayan Krishnan

12/31/2021, 10:40 AM
@Junaid amjad I checked with Frontend team. The verilog looks ok. But during yosys synthesis top level unconnected signals removed by OPT_CLEAN.
Copy code
15.5. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \main..
Removed 1010 unused cells and 1736 unused wires.
<suppressed ~1104 debug messages>
Need to find option to skip this
j

Junaid amjad

01/03/2022, 6:02 AM
@Vijayan Krishnan So what do I need to do now?
like you are saying that my top level connections are wrong or what?
v

Vijayan Krishnan

01/03/2022, 6:34 AM
@Junaid amjad can you tag yourself in the above github issue. Answer the experts question, so it will be resolved else it will be closed
d

donn

01/03/2022, 11:30 AM
@Junaid amjad
j

Junaid amjad

01/03/2022, 12:42 PM
@donn yes you are right, design does not has any output because it's very basic level single cycle processor that's just executing instructions and as memories are also part of core so even data is also not an output. I'm working on implementation of some peripherals like, UART, SPI, RAM etc. I just try this design to understand the flow of Openlane. so if I just add a dummy output variable, will my design be able to complete the openlane flow?
d

donn

01/03/2022, 12:42 PM
yes.
To be precise, the output variable needs to actually amtter
If it's an empty wire, it'll still be optimized out
j

Junaid amjad

01/03/2022, 12:44 PM
like an empty wire will work or not?
d

donn

01/03/2022, 12:44 PM
It will not work.
j

Junaid amjad

01/03/2022, 12:45 PM
So I have to assign that output something that always going to get some value
d

donn

01/03/2022, 12:46 PM
you have to assign it to something in your circuit. like the read data from memory
j

Junaid amjad

01/03/2022, 12:51 PM
Got you
thanks @donn