https://open-source-silicon.dev logo
Channels
aa
abcc
activity
adiabatonauts
analog-design
announce
announcements
b2aws
b2aws-tutorial
bag
basebands
beagleboard
bluetooth
board-respin
cadence-genus
cadence-innovus
cadence-spectre
cadence-virtuoso
caravan
caravel
caravel-board
chilechipmakers
chip-yard
chipignite
chipignite2206q_stanford_bringup
chisel
coalition-for-digital-environmental-sustainability
community_denmark_dtu
containers
courses
design-review
design-services
dffram
digital-design
digital-electronics-learners
discord-mods
dynamic-power-estimation
efabless
electric
events
fasoc
fault
foss-asic-tools
fossee-iitb-esim
fossee-iitb-google-sky130
fpga
funding
fuserisc
general
generative-ai-silicon-challenge
genius-vlsi
gf180
gf180mcu
hardware-beginners
help-
ieee-sscs-cac-23
ieee-sscs-dc-21q3
ieee-sscs-dc-22
ieee-sscs-dc-23
ihp-sg13g2
images
infiniband
j-core
japan-region
junk
klayout
latam_vlsi
layouteditor
lvs
lvs-analysis
magic
magical
maker-projects
maker-zone
microwatt
mpw-2-silicon
mpw-one-clean-short
mpw-one-silicon
neuro-mem
nydesign
open_pdks
open-pdk
openadiabaticlogic
openfpga
openhighqualityresonators
openlane
openlane_cloudrunner
openlane-development
openocd
openpositarithmetic
openpower
openram
openroad
opentitan
osu
pa-test-chip
paracells
pd-openlane-and-sky130
picosoc
pll
popy_neel
power
private-shuttle
rad-lab-silicon
radio
rdircd
reram
researchers
rf-mmw-design
rios
riscv
sdram
serdes
shuttle
shuttle-precheck
shuttle-status
silicon-photonics
silicon-validation
silicon-validation-private
sky130
sky130-ci
sky130-pv-workshop
sky65
sky90
skywater
sram
stdcelllib
strive
swerv
system-verilog-learners
tapeout-job
tapeout-pakistan
team-awesome
timing-closure
toysram
travis-ci
uvm-learners
vendor-synopsys
venn
verification-be
verification-fe
verilog-learners
vh2v
vhdl
vhdl-learners
vliw
vlsi_verilog_using_opensource_eda
vlsi_verilog_using_opensoure_eda
vlsi-learners-group
vlsi101
waveform-viewers
xls
xschem
xyce
zettascale
Powered by
Title
t

Tim Edwards

04/13/2023, 12:16 AM
@Philipp Gühring: Are you suggesting that it worked prior to (or some time prior to) rev 8.3.368? I find it surprising because there should be no difference between reading commands off of the command line and reading commands out of a file. The only think I can think of is that the separation of commands into separate lines is at issue when using
cat
. Try putting all commands on one line separated by
;
or on multiple lines separated by
;\
(as magic interprets backslash-newline as a line continuation). Does that work?
The above trick is what I do in Makefile recipes that invoke magic using
<< EOL ...  EOL
.
🌍 1
p

Philipp Gühring

04/13/2023, 6:52 PM
I think that I had it working somewhere before 8.3.368, but I am not 100% sure. Could it be that the before or after the -rcfile parsing something changes the state of magic? I'll try to create a small reproducible example.
One problem could be that I generated the file with DRC errors but without << checkpaint >> so magic thinks that the file is DRC clean.
https://pdk.libresilicon.com/magicdrc.zip <-- Just run the reproduce.sh
Perhaps a "drc invalidate" command would be nice that tells the DRC engine that it has to start fresh from scratch. But the commands I am sending. I don't like about the checkpaint that I have to give it a rectangle which has the risk that it might be too small.
t

Tim Edwards

04/14/2023, 3:34 PM
"checkpaint" should force the DRC engine to run as soon as you turn it on. "drc check" should be the equivalent of your suggested "drc invalidate"---it will invalidate DRC and re-run all checks. The commands you're using and their sequence appear to be correct. The other possibility is that all these commands are non-blocking (although I thought that "drc catchup" is supposed to be blocking). If so, it might reach the end of the script and exit without waiting for the DRC to finish---except that was what "drc catchup" is supposed to prevent. That was what made me wonder if it's an issue of how the commands are passed to stdin.
p

Philipp Gühring

04/14/2023, 3:43 PM
I tried adding checkpaint now, but it doesn't help. I also reduced the tcl file now to this minimum: load INV.mag ; select top cell ; drc check ; drc catchup ; drc count total ; exit
Yes, it could be some race condition with the commands being passed in. I think I remember having had the behaviour that it sometimes worked and it sometimes didn't.
The faster you pass in the commands (in just one line), likely the worse.
t

Tim Edwards

04/14/2023, 3:47 PM
This is a suggestion for debugging, not a solution, but try adding a line
after 1000
(1 second forced delay).
p

Philipp Gühring

04/14/2023, 3:49 PM
Still doesn't work: load INV.mag ; select top cell ; drc check ; after 10000 ; drc catchup ; drc count total ; exit
(even with 10 seconds)
It really delays for 10 seconds
I have updated the https://pdk.libresilicon.com/magicdrc.zip now with the minimized example for easier debugging
It had taken me quite a long time to figure out that the behviour is different for -rcfile and STDIN. I have implemented the workaround with the rcfiles into my flow now, so it's not urgent to get it fixed for me anymore.