11.8. Inspecting a results database file from command line
The results database of a design task is stored in a SQLite database file. The content of this file can be inspected from the command line. The tool for this task is the PyOPUS results file inspector (pyori). It can be invoked from the command line eqither by typing
pyori [arguments]
or
python3 -m pyopus.design.sqlite
If you call it without arguments a short help note will be printed. To print the results tree, use
pyori <database file.sqlite>
To inspect the tree stored in corners.sqlite
one would type
pyori corners.sqlite tree
or simply
pyori corners.sqlite
A typical output looks like
Children of root record
-----------------------
1 : corners (Task, children=7)
2 : Aggregator setup (TaskCBD)
3 : Pass 1 verification (OptIter)
4 : Pass 1 optimization (Corners, children=14)
5 : Iteration 1 (OptIter)
6 : Iteration 2 (OptIter)
7 : Iteration 24 (OptIter)
8 : Iteration 66 (OptIter)
9 : Iteration 88 (OptIter)
10 : Iteration 138 (OptIter)
11 : Iteration 187 (OptIter)
12 : Iteration 188 (OptIter)
13 : Iteration 189 (OptIter)
14 : Iteration 239 (OptIter)
15 : Iteration 259 (OptIter)
16 : Iteration 277 (OptIter)
17 : Iteration 291 (OptIter)
18 : Iteration 298 (OptIter)
19 : Pass 2 verification (OptIter)
20 : Pass 2 optimization (Corners, children=9)
21 : Iteration 1 (OptIter)
22 : Iteration 2 (OptIter)
23 : Iteration 20 (OptIter)
24 : Iteration 68 (OptIter)
25 : Iteration 160 (OptIter)
26 : Iteration 161 (OptIter)
27 : Iteration 162 (OptIter)
28 : Iteration 226 (OptIter)
29 : Iteration 289 (OptIter)
30 : Pass 3 verification (OptIter)
31 : Task summary (Conclusion)
Every row corresponds to one node. Children are indented with respect to their parent. Every line starts with the node ID followed by a description. For every node the type of the node is printed in parenthesis. For nodes that have children the number of children is also printed.
Every node has one or more aspects associated with it. To print the list of aspects available for a particular node, use
pyori <database file.sqlite> aspects <node id>
To print the list of availabel aspects for node with ID=5, type
pyori corners.sqlite aspects 5
To print a particular aspect of a node, type
pyori <database file.sqlite> print <node id> <aspect>
For instance, to print the cost
aspect of node with ID=5, type
pyori corners.sqlite print 5 cost
The output should look like this.
Id : 5
Parent : 4
Name : Iteration 1
Type : OptIter
Time : 1536323228.03 (2018-09-07 14:27:08)
isup < 1.000000e-03 worst=2.371893e-04 cf=0.000000e+00 c8_wp_thi_vhi
vgs_drv > 0.000000e+00 worst=5.140638e-02 cf=0.000000e+00 c1_wo_tlo_vlo
vds_drv > 0.000000e+00 o worst=-5.315156e-01 cf=9.712724e-01 c9_ws_tlo_vlo
swing > 1.000000e+00 o worst=2.228083e-03 cf=9.977719e-01 c11_ws_thi_vlo
gain > 6.000000e+01 o worst=-8.424399e+01 cf=2.404066e+00 c3_wo_thi_vlo
ugbw > 1.000000e+07 X in 1 corner(s) cf=1.000000e+06 c11_ws_thi_vlo
pm > 5.000000e+01 X in 1 corner(s) cf=1.000000e+06 c3_wo_thi_vlo
overshdn < 1.000000e-01 . worst=3.217488e-01 cf=0.000000e+00 c1_wo_tlo_vlo
overshup < 1.000000e-01 . worst=3.672204e-01 cf=0.000000e+00 c2_wo_tlo_vhi
tsetdn < 1.000000e-06 . worst=9.995923e-06 cf=0.000000e+00 c3_wo_thi_vlo
tsetup < 1.000000e-03 worst=9.936220e-06 cf=0.000000e+00 c11_ws_thi_vlo
slewdn > 2.000000e+06 . worst=5.705511e+03 cf=0.000000e+00 c1_wo_tlo_vlo
slewup > 2.000000e+06 . worst=7.656355e+02 cf=0.000000e+00 c9_ws_tlo_vlo
cmrr > 9.000000e+01 o worst=-3.378792e+01 cf=1.375421e+00 c9_ws_tlo_vlo
psrr_vdd > 6.000000e+01 o worst=-8.438008e+01 cf=2.406335e+00 c3_wo_thi_vlo
psrr_vss > 6.000000e+01 o worst=-1.961312e+01 cf=1.326885e+00 c9_ws_tlo_vlo
area < 9.000000e-09 worst=3.961832e-09 cf=0.000000e+00 nominal
cost function value = 2.000009e+06
The node ID, parent’s ID, node name, node type, and timepoint are printed followed by the desired node’s aspect.
To print all aspects for a particular node, use
pyori <database file.sqlite> print <node id>
An example:
pyori corners.sqlite print 5
would print
Id : 5
Parent : 4
Name : Iteration 1
Type : OptIter
Time : 1536323228.03 (2018-09-07 14:27:08)
mirr_w = 7.469932e-05
mirr_wd = 9.000483e-05
mirr_wo = 5.649412e-05
mirr_l = 9.164715e-07
mirr_ld = 2.846626e-06
out_w = 4.068112e-05
out_l = 1.538790e-06
load_w = 2.583243e-06
load_l = 1.664465e-06
diff_w = 4.843694e-05
diff_l = 2.357611e-06
c_out = 1.218229e-11
r_out = 1.670807e+05
isup : c8_wp_thi_vhi = 2.371893e-04
vgs_drv : c1_wo_tlo_vlo [xmn1] = 5.963990e-01
: [xmn2] = 1.864802e-01
: [xmn3] = 5.140638e-02
: [xmn4] = 8.635486e-02
: [xmn5] = 5.140648e-02
: [xmp1] = 9.767202e-01
: [xmp2] = 9.767202e-01
: [xmp3] = 9.586674e-01
vds_drv : c9_ws_tlo_vlo [xmn1] = -4.038200e-01 Low
: [xmn2] = -3.593675e-02 Low
: [xmn3] = 4.920940e-01
: [xmn4] = 9.301180e-02
: [xmn5] = 1.576456e+00
: [xmp1] = 8.820300e-01
: [xmp2] = 8.160324e-01
: [xmp3] = -5.315156e-01 Low
swing : c11_ws_thi_vlo = 2.228083e-03 Low
gain : c3_wo_thi_vlo = -8.424399e+01 Low
: c7_wp_thi_vlo = -6.559552e+01 Low
: c9_ws_tlo_vlo = -5.553984e+01 Low
gain_com : c9_ws_tlo_vlo = -2.175192e+01
gain_vdd : c3_wo_thi_vlo = 1.360908e-01
gain_vss : c9_ws_tlo_vlo = -3.592672e+01
ugbw : c11_ws_thi_vlo = Failed
pm : c3_wo_thi_vlo = Failed
overshdn : c1_wo_tlo_vlo = 3.217488e-01 High
overshup : c2_wo_tlo_vhi = 3.672204e-01 High
tsetdn : c3_wo_thi_vlo = 9.995923e-06 High
tsetup : c11_ws_thi_vlo = 9.936220e-06
slewdn : c1_wo_tlo_vlo = 5.705511e+03 Low
slewup : c9_ws_tlo_vlo = 7.656355e+02 Low
cmrr : c9_ws_tlo_vlo = -3.378792e+01 Low
psrr_vdd : c3_wo_thi_vlo = -8.438008e+01 Low
psrr_vss : c9_ws_tlo_vlo = -1.961312e+01 Low
area : nominal = 3.961832e-09
isup < 1.000000e-03 worst=2.371893e-04 cf=0.000000e+00 c8_wp_thi_vhi
vgs_drv > 0.000000e+00 worst=5.140638e-02 cf=0.000000e+00 c1_wo_tlo_vlo
vds_drv > 0.000000e+00 o worst=-5.315156e-01 cf=9.712724e-01 c9_ws_tlo_vlo
swing > 1.000000e+00 o worst=2.228083e-03 cf=9.977719e-01 c11_ws_thi_vlo
gain > 6.000000e+01 o worst=-8.424399e+01 cf=2.404066e+00 c3_wo_thi_vlo
ugbw > 1.000000e+07 X in 1 corner(s) cf=1.000000e+06 c11_ws_thi_vlo
pm > 5.000000e+01 X in 1 corner(s) cf=1.000000e+06 c3_wo_thi_vlo
overshdn < 1.000000e-01 . worst=3.217488e-01 cf=0.000000e+00 c1_wo_tlo_vlo
overshup < 1.000000e-01 . worst=3.672204e-01 cf=0.000000e+00 c2_wo_tlo_vhi
tsetdn < 1.000000e-06 . worst=9.995923e-06 cf=0.000000e+00 c3_wo_thi_vlo
tsetup < 1.000000e-03 worst=9.936220e-06 cf=0.000000e+00 c11_ws_thi_vlo
slewdn > 2.000000e+06 . worst=5.705511e+03 cf=0.000000e+00 c1_wo_tlo_vlo
slewup > 2.000000e+06 . worst=7.656355e+02 cf=0.000000e+00 c9_ws_tlo_vlo
cmrr > 9.000000e+01 o worst=-3.378792e+01 cf=1.375421e+00 c9_ws_tlo_vlo
psrr_vdd > 6.000000e+01 o worst=-8.438008e+01 cf=2.406335e+00 c3_wo_thi_vlo
psrr_vss > 6.000000e+01 o worst=-1.961312e+01 cf=1.326885e+00 c9_ws_tlo_vlo
area < 9.000000e-09 worst=3.961832e-09 cf=0.000000e+00 nominal
cost function value = 2.000009e+06