Commit Graph

27 Commits

Author SHA1 Message Date
Sylvain Munaut 711e294bec scripts/liberty: Add option to output Makefile dependency list
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2022-01-05 23:33:52 +01:00
Sylvain Munaut 72d1fd69ce scripts/liberty: Add argument to get list of possible target liberty files
Instead of a "human" aimed list of available corners, this generates a
machine readable list of liberty files that can be generated for a
given library.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2022-01-05 23:33:52 +01:00
Sylvain Munaut 9a4821ec6c scripts/liberty: Accept target output file as argument
Instead of giving the library and corner to gnerate, you can provide
the target .lib file you want generated and this will pick the right
parameters to generate that file

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2022-01-05 23:33:52 +01:00
Sylvain Munaut ba5e4eb2d0 scripts/liberty: Send all 'messages' to stderr
Since this script will be used in Makefile to generate machine parseable
output, it's importatnt that all 'user' messages are sent to stderr to
be differentiated from the 'machine' output

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2022-01-05 23:33:52 +01:00
Rob Taylor 9d39c63f51 Add doctests for liberty_float edge case
Issue #280
2020-12-22 17:56:00 +00:00
Rob Taylor d99d853ef9 Faster version of liberty_float - gives a 25% to 50% speedup
This also fixes a bug in liberty_float for numbers with a magnitute
between 9 and 15.

Previously:
    >>> liberty_float(1e15)
    '1000000000000000'
    >>> liberty_float(1e10)
    '10000000000.'
    >>> liberty_float(1e9)
    '1000000000.0'
    >>> liberty_float(1e16)
    '1.000000e+16'

Now:
    >>> liberty_float(1e15)
    '1.000000e+15'
    >>> liberty_float(1e10)
    '1.000000e+10'
    >>> liberty_float(1e9)
    '1000000000.0'
    >>> liberty_float(1e16)
    '1.000000e+16'
2020-12-22 17:54:33 +00:00
Ethan Mahintorabi db23cfaa59 scripts/liberty: Adds output directory customization
Adds the output flags -o and --output_directory to control the output of the liberty files.
2020-10-14 10:58:49 -07:00
Tim 'mithro' Ansell d91e88682f scripts/liberty: Support fixed statetable output.
The statetable values where fixed in the `.lib.json` files.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-20 16:42:34 -07:00
Tim 'mithro' Ansell d7a58ea703 scripts/liberty: Support new comma only syntax.
Syntax before;
```
comp_attribute blah,blah
```

Syntax after;
```
comp_attribute,blah,blah
```

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-20 16:42:34 -07:00
Tim 'mithro' Ansell e14136b064 scripts/liberty: Fail if doctests fail.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-20 16:42:34 -07:00
Tim 'mithro' Ansell 3e9068dbf1 scripts/liberty: Small whitespace fix.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-20 16:42:34 -07:00
Tim 'mithro' Ansell 296ef2066e scripts/liberty: Rework how attribute types are discovered.
* Add functions for producing different types of values into liberty
   output (plus doctests for them).
 * Respect the type given by a `define()` statement.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-15 07:04:50 -07:00
Tim 'mithro' Ansell c9d0c8131f script/liberty: Slightly nicer debug output.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-15 07:04:50 -07:00
Tim 'mithro' Ansell b70d1a51ad scripts/liberty: Make the `clk_width` attribute a string.
Fixes #69.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-15 07:04:50 -07:00
Tim 'mithro' Ansell c9a704335e timing/liberty: Also check for ccsnoise on buses.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-14 19:32:27 -07:00
Tim 'mithro' Ansell 463f2fd6aa scripts/liberty: Second attempt at filtering all ccsnoise data.
Fixes #77.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-14 18:12:28 -07:00
Tim 'mithro' Ansell 15f6966a94 scripts/liberty: Adding a `--debug` option.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-14 12:51:58 -07:00
Tim 'mithro' Ansell b626ca017d scripts/liberty: More aggressive ccsnoise filtering.
Fixes #77.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-12 22:24:19 -07:00
Tim 'mithro' Ansell 73d129ef85 scripts/liberty: Fix indenting first value in list.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-12 22:24:08 -07:00
Tim 'mithro' Ansell ee77597986 api: Change the way liberty attributes are sorted.
Fixes #37, #40.

The `LIBERTY_ATTRIBUTE_ORDER` template is used to control the ordering
of the liberty attribute output.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-06 06:36:13 -07:00
Tim 'mithro' Ansell 74273c4f0b api: Adding liberty file generator.
Generates liberty timing files from the included json timing data.

Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
2020-07-06 06:36:13 -07:00
Tim 'mithro' Ansell 45580cb998 api: Fix parsing cell name.
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-06 06:36:13 -07:00
Tim 'mithro' Ansell f25334442b api: Adding corners processing.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
2020-07-06 06:36:13 -07:00
Christian Clauss cc2568a443
Undefined name: minor -> self.hash
[flake8](http://flake8.pycqa.org) testing of https://github.com/google/skywater-pdk on Python 3.8.3

$ __flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics__
```
./scripts/python-skywater-pdk/skywater_pdk/base.py:332:71: F821 undefined name 'minor'
        return (self.milestone, self.major, self.minor, self.commits, minor)
                                                                      ^
1     F821 undefined name 'minor'
1
```
https://flake8.pycqa.org/en/latest/user/error-codes.html

On the flake8 test selection, this PR does _not_ focus on "_style violations_" (the majority of flake8 error codes that [__psf/black__](https://github.com/psf/black) can autocorrect).  Instead these tests are focus on runtime safety and correctness:
* E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST).  Often these issues are a sign of unused code or code that has not been ported to Python 3.  These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user.
* F63 tests are usually about the confusion between identity and equality in Python.  Use ==/!= to compare str, bytes, and int literals is the classic case.  These are areas where __a == b__ is True but __a is b__ is False (or vice versa).  Python >= 3.8 will raise SyntaxWarnings on these instances.
* F7 tests logic errors and syntax errors in type hints
* F82 tests are almost always _undefined names_ which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3.  These also would be compile-time errors in a compiled language but in Python a __NameError__ is raised which will halt/crash the script on the user.
2020-07-02 21:39:19 +02:00
Tim 'mithro' Ansell 65fa885014 docs: Lots of improvements to the documentation.
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
2020-06-11 14:03:59 -07:00
Tim 'mithro' Ansell ce5576edff docs: Adding the Python API to output docs.
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
2020-06-11 14:03:54 -07:00
Tim 'mithro' Ansell 1d603e7875 scripts: Adding initial version of the python-skywater-pdk module.
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
2020-06-11 14:01:44 -07:00