efabless / cace Goto Github PK
View Code? Open in Web Editor NEWCircuit Automatic Characterization Engine
Home Page: https://cace.readthedocs.io/
License: Apache License 2.0
Circuit Automatic Characterization Engine
Home Page: https://cace.readthedocs.io/
License: Apache License 2.0
I'm using the module python -m cace.common.read_cace
as syntax evaluation criteria.
When passed an unexsiting file as argument,
I expect the program to indicate that the file doesn't exist
The program indicates that the file doens't exist as expected but also gives the success text
$ python -m cace.common.cace_read asdfasdgasdg
Error: No such file asdfasdgasdg
CACE file has no syntax issues.
See this issue here: efabless/openlane2#494
A compatible use of rich
would be great.
Add a button to clear the console in the GUI.
When a parameter is copied (duplicated), then _copy
is appended to the parameter name.
If such a name already exists it should append another _copy
until the name is unique in order to avoid name collisions.
cell is ~/cheetah_v3_analog/dependencies/sky130_icrg_ip__ulpcomp/
Run time is exceptionally long for me but about 100x faster for Tim. Suspect an IO setting difference that Tim has set but I have not.
The simulation with the speed problem is input offset voltage
Currently, the main point at which CACE breaks when I clone a user's project is where the user has hard-coded a path to the PDK or to the project itself that is an absolute path (ngspice does not handle tilde-escapes, so that doesn't need to be considered). I would like to see the following behavior implemented:
(1) The CACE template substitution discovers any path in the netlist.
(2) If the path has "libs.tech" or "libs.ref" (clearly pointing to a PDK) but is not using "{PDK_ROOT}", then flag a warning back to the user that there is a PDK path in the schematic that is not portable.
(3) If the path has the user's $HOME as a leading component, also flag this as a portability issue
(4) After doing its own variable substitutions, it should check each such path to see if it exists. If not, then it should flag an error. Then, it should check for whether the path appears to be to a PDK or to the project directory itself, and attempt to correct the entry to make the path valid.
Alternately, if (2) and (3) forced a fatal error instead of a warning, then (4) would not be necessary.
However, beware of the situation where the upstream schematic has a variable that is being substituted by xschem itself rather than CACE. Maybe only absolute paths that appear in the .sch file should be flagged.
Currently, CACE requires setuptools_scm≥8, which is not available in nixpkgs 23.11 (which is the current stable release channel we have pinned for OpenLane.)
I currently get around this by sed
-ing the version requirement (and it appears to build just fine.)
https://github.com/efabless/openlane2/blob/b46857b7d4ff6afff65d0bbbdd639da364f5ff26/nix/cace.nix#L41
The cace_read
parser fails to identify an illegal parameter name. Since parameter names are used to generate file names, they must be both unique and may not contain spaces.
The parser also fails to identify a spec entry, and possibly all key:value dictionary entries, in which a key is given but no value is given. In the case of a specification entry, such as "minimum:", a missing value should be set by default to "any". In other cases, defaults should be substituted as makes sense or else a missing value should flag an error.
Ideally, flagged errors should report a line number in the file.
Failure to read a file in cace-gui should not result in an exit, which causes error messages to disappear.
After exiting cace the terminal has no visible prompt and no cursor but command entry still functions
If you start some simulations and then change the netlist source while they are still running, things go wrong as the new table is annotated with the results of the running simulations.
Either:
Currently CACE starts ngspice in interactive mode. This means if there is no quit
at the end of the control script, CACE gets stuck.
Therefore, pass --batch
to ngspice to automatically quit at the end of simulation.
I previously had two behaviors in CACE that appear to have become lost:
(1) When cace-gui
is run, if there is no matching project name or no matching .txt or .yml file, then the GUI still pops up, and waits for the user to select a characterization file to load.
(2) Before cace-gui
brings up the GUI window, all output text is collected in a "messages" variable. If the GUI comes up successfully, then "messages" is dumped into the console window pane. If something happens and cace-gui
dies, then "messages" is dumped to the terminal as the last thing that happens before the program exits (requiring that exceptions be caught and handled gracefully).
Right now, if I start cace-gui
and (I think) either of the above items happens, then cace-gui
returns to the terminal prompt with absolutely no indication that anything happened.
Opening the report/plot for a canceled simulation which had previously successfully completed fails due to empty results.
For a simulation in which
variables {
name: freq
display: Frequency
unit: Hz
+
name: Vprobe
display: Vin
unit: dBV
[...]
}
... then it takes many tens of milliseconds per unit conversion to run spice_unit_unconvert
on this value and plot a simulation output.
When "Simulate All" is pressed, all parameters are queued and up to parallel_parameters
are run in parallel. The remaining queued parameters can not yet be cancelled until they are also in the running state.
Please include an include
possibility to the datasheet, so that sections could be read from a file, like VDD or temperature range.
In rare cases, the "Simulate All" button does not change back to "Simulate All" after all parameters have completed.
It would be nice to be able to use CACE for all sort of circuit characterization, not just magic-flow IC characterization. For instance, there are PCB designs that may have no layout, and testbench designs that have no schematic and only a netlist.
Currently, CACE will try to process a schematic into a netlist (and will fail if it does not), even if a netlist already exists. The desired behavior is that if a netlist exists, and a schematic does not, it should simply attempt to use the netlist that is already there.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.