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

Taylor P

04/17/2023, 1:33 PM
Hello, I am am trying to get a ring oscillator working in openlane/caravel, but the yosys synth script seems to be optimizing out and replacing them with buf_2 primitives. I have tried a couple things such as adding keeps for the following: -for the wires of the inverters -on the the module instantiating the oscillator -on for the generate block instantiating the sky130_fd_sc_hd__inv_2 primitives for the oscillator. I have also turned off synth_buffering just to test does anyone have any advice for how to make yosys leave these inverters alone?
a

Arman Avetisyan

04/17/2023, 1:44 PM
In verilog: (keep) reg [1023:0] inv_out;
It worked in the past. Make sure you have it connected to the output.
t

Taylor P

04/17/2023, 6:05 PM
@Arman Avetisyan out of curiosity, do you know how to turn off yosys optimizations completely. We want to test this as well
a

Arman Avetisyan

04/17/2023, 7:16 PM
change the synthesis script to disable the optimizations
no other way. Even if there is a way, you are going to get the answer to your question in the script
t

Taylor P

04/17/2023, 7:18 PM
Makes sense, I disabled/commented these options in the synth script and found that some logic optimization still happened
as well as this line
a

Arman Avetisyan

04/17/2023, 7:34 PM
i am sure its not the only ones, you need to check with yosys documentation
one more thing: make sure you are using odd number of inverters, otherwise it might synthesize buffers
also, you can debug it by writing dot files to show the structure that yosys sees/generates
🙌 1
m

Matt Venn

04/18/2023, 11:03 AM
we've also found that instantiating as a standard cell stops optimisation
t

Taylor P

04/18/2023, 3:00 PM
Here is what we were trying to do and found it minimizes our ring oscillator regardless of where we end up putting keeps. One thing of note, we are trying to compile this using the caravel version of openlanes flow for one of the chipignite shuttles, are there any additional scripts trying to minimize the logic in this flow/is there any way to perhaps disable abc's advanced optimization?
edit: early in the process we had the sky130 primitives as a verilog include in our config.json. removing this include and replacing it with a blackbox caused the oscillator to not be optimized out.
m

Matt Venn

04/18/2023, 3:40 PM
the only other thing I had to do with this method
is enable support for blackbox cells with this line of config
set ::env(SYNTH_READ_BLACKBOX_LIB) 1
t

Taylor P

04/18/2023, 4:22 PM
semi-related, but did you ever figure out how to do post layout simulation for your ring oscillator and/or STA on a specific path for the oscillator. I remember seeing a post about this when searching.
m

Matt Venn

04/18/2023, 4:25 PM
yes, see the repo I linked above