[Eda-dev] qflow Docker experiment

Øyvind Harboe oyvind.harboe at zylin.com
Thu Jul 4 16:55:01 EDT 2019


This is a short account of my Docker experiment with qflow.

Comments welcome!

I wanted to give qflow another try and I knew I had to create a Dockerfile
for two reasons:

   1. Once I have this up and running, I'd like to have the static timing
   analysis as part of our continous integration reports. I really want a
   sense of where the critical path is in custom silicon vs. an FPGA.
   2. This is open source, so I want to be able to access modified versions
   of the source and reproduce/rebuild the resulting qflow toolchain easily.
   Sometimes I'll want the latest release, other times I'll want to get things
   from git + patch a bit or do other special steps, like installing
   technology files I can get my mittens on.

With the attached Dockerfile, I get as far as place and route with my
chosen test. It seems to segfault in something called "addspacers":

# /usr/local/share/qflow/bin/addspacers -stripe 5 150 PG -p vdd -g gnd -f
FILL -O -l /usr/local/share/qflow/tech/osu035/osu035_stdcells.lef -o
ControlUnitTestBench_filled.def ControlUnitTestBench
corrupted size vs. prev_size
Aborted (core dumped)

*Questions that come to mind:*


   - Looks like "addspacers" is part of qflow, but is the "Aborted (core
   dumped)"  a somewhat disturbing error message for already invalid
   input(incorrect data generated upstream) or is it a problem in
   "addspacers"? Which module should I try to upgrade/downgrade?
   - Can I get something newer than osu035 (350nm, right?). I've heard
   about open source/academic 40nm technology files, but is that generally
   available these days?



# qflow place ControlUnitTestBench
--------------------------------
Qflow project setup
--------------------------------

Technology set to osu035 from existing qflow_vars.sh file
Regenerating files for existing project ControlUnitTestBench
Qrouter detail maze router version 1.4.59.T
Reading LEF data from file
/usr/local/share/qflow/tech/osu035/osu035_stdcells.lef.
LEF Read, Line 135: NOTE:  Old format VIARULE ignored.
LEF Read, Line 136: NOTE:  Old format VIARULE ignored.
LEF Read, Line 140: NOTE:  Old format VIARULE ignored.
LEF Read, Line 141: NOTE:  Old format VIARULE ignored.
LEF Read, Line 151: NOTE:  Old format VIARULE ignored.
LEF Read, Line 152: NOTE:  Old format VIARULE ignored.
LEF Read, Line 156: NOTE:  Old format VIARULE ignored.
LEF Read, Line 157: NOTE:  Old format VIARULE ignored.
LEF Read, Line 167: NOTE:  Old format VIARULE ignored.
LEF Read, Line 168: NOTE:  Old format VIARULE ignored.
LEF Read, Line 172: NOTE:  Old format VIARULE ignored.
LEF Read, Line 173: NOTE:  Old format VIARULE ignored.
LEF file:  Defines site corner (ignored)
LEF file:  Defines site IO (ignored)
LEF file:  Defines site core (ignored)
LEF read: Processed 3179 lines.
LEF Read: encountered 0 errors and 12 warnings total.
Vertical route layer at non-minimum pitch 3.2.  Using smaller pitch 1.6,
will route on 1-of-2 tracks for layer metal4.
Running vlog2Cel to generate input files for graywolf
vlog2Cel  -l  /usr/local/share/qflow/tech/osu035/osu035_stdcells.lef -u 100
-o //ControlUnitTestBench.cel //ControlUnitTestBench.rtlnopwr.v
No ControlUnitTestBench.cel1 file found for project. . . no partial
blockages to apply to layout.
No ControlUnitTestBench.cel2 file found for project. . . continuing without
pin placement hints
Running GrayWolf placement
graywolf -n ControlUnitTestBench
Running getantennacell to determine cell to use for antenna anchors.
getantennacell.tcl ControlUnitTestBench
 /usr/local/share/qflow/tech/osu035/osu035_stdcells.lef
Running getfillcell to determine cell to use for fill.
getfillcell.tcl ControlUnitTestBench
 /usr/local/share/qflow/tech/osu035/osu035_stdcells.lef FILL
Using cell FILL for fill
Running place2def to translate graywolf output to DEF format.
place2def.tcl ControlUnitTestBench FILL
Running addspacers to generate power stripes and align cell right edge
addspacers -stripe 5 150 PG -p vdd -g gnd -f FILL -O  -l
 /usr/local/share/qflow/tech/osu035/osu035_stdcells.lef -o
ControlUnitTestBench_filled.def ControlUnitTestBench
*Abort (core dumped)*
addspacers failed with exit status 134
Premature exit.

-- 
Øyvind Harboe, General Manager, Zylin AS, +47 917 86 146
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.opencircuitdesign.com/pipermail/eda-dev/attachments/20190704/49a9951f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Dockerfile
Type: application/octet-stream
Size: 2564 bytes
Desc: not available
URL: <http://www.opencircuitdesign.com/pipermail/eda-dev/attachments/20190704/49a9951f/attachment.obj>


More information about the Eda-dev mailing list