magical-eda / magical Goto Github PK
View Code? Open in Web Editor NEWMachine Generated Analog IC Layout
License: BSD 3-Clause "New" or "Revised" License
Machine Generated Analog IC Layout
License: BSD 3-Clause "New" or "Revised" License
If pmos substrate is not connected to vdd, it will result in routing failure because M6 is reserved for power. Dirty fix is to force pins to lower metals.
I met some difficulties in the anaroute part. Could you please help me with that?
I attach a PDF file to describe my problem in detail.
ota1.zip
ota1test.zip
run_problem.pdf
I am trying to change any parameters for M1 for example from " MAGICAL/examples/mockPDK/mock.lef " but the generated layout is the same and Layout of M1 is not changed.
Kindly how can one change width, spacing, enclosure ... etc or any other parameter ?
How to reproduce: git reset --hard af681f4
Add import os to PnR.py and Router.py.
The flow somehow still fails when reading in GDS files for placer. Highly possible because of Device generator?
Dose MAGICAL support tsmc 65 nm PDK?
because there is a class for tsmc65_glovar in glovar.py.
and how can I map this tool to work with tsmc65 nm?
Rewrite the README.md. Highlight the following things.
Currently it is file based. Adding a python interface would be concurrent with other submodules.
I run the example with python2.7, and install gdspy with pip. Then get TypeError:o_gds() takes exactly 2 arguments (3 given)
Regression tests are needed. We should work on this after having the benchmark circuits online.
Blocked by #9
Add the benchmark circuits to the repo. Remove the PDK-related parameters.
Please add the router as submodule and change the related codes if needed.
All published code should have a LICENSE file.
See https://help.github.com/en/articles/adding-a-license-to-a-repository
We need find a way to aligning pins on the top-level.
I can not find where the package device_generation is being defined. I see these imports commands:
from device_generation import *
but there is no files that exist corresponding to that package.
Suggesting to change line 220 in https://github.com/magical-eda/MAGICAL/blob/master/flow/python/Placer.py from
text = gdspy.Text(cktNode.name,50,((boundary.xLo+boundary.xHi)/2+x_offset,(boundary.yLo+boundary.yHi)/2+y_offset),layer=100)
to
text = gdspy.Label(cktNode.name,((boundary.xLo+boundary.xHi)/2+x_offset,(boundary.yLo+boundary.yHi)/2+y_offset), 'o')
This way, it creates a floorplan with readable labels in the GDS instead of labels created by multiple rectangles in layer 100. I think other users might also find it more helpful that way.
Hi, the layout of tsmc40nm pdk is used in the whole flow, so if post simulation is performed, the same pdk is required. Since I failed to find the tsmc40nm process, I would like to ask if I can change the tsmc40 to tsmc18 process in MAGICAL?
I have tried to run the following command but it gives me an error, can you help?
Command: ./build
Error: https://drive.google.com/file/d/17JOBQbn23Y62BHpwyoU4zWvw3XFfjwBK/view?usp=sharing
gcc and g++ version 8.2 are installed and I am using Debian.
We should cleaning up the hardcoded parameters.
Please add the placement engine as submodules and change the related codes. Assign to @krzhu
Hi,
I have tried to run the bench mark circuit adc1, but I am getting the following error. Could you please help me on this,? am I missing any packages or something
Traceback (most recent call last):
File "/home/kasijun/MAGICAL/examples/adc1/../../flow/python/Magical.py", line 10, in
import Params, MagicalDB, Flow
File "/home/kasijun/MAGICAL/flow/python/MagicalDB.py", line 8, in
import DesignDB
File "/home/kasijun/MAGICAL/flow/python/DesignDB.py", line 8, in
import magicalFlow
ModuleNotFoundError: No module named 'magicalFlow'
BR
The layer ID is the number of layer in GDSII layout format. For example, 11 can be M1 and 12 can be M2.
The layer ID is related to know what are shapes representing for. However, we need have different strategy for different types of layers. For example, the OD layer is used in router for determining the access point. Therefore, we cannot regard them as abstract layout but need a way to know which layer is what.
This thing now involves some hardcoding and each component is managing this on their own. We need to have a unified approach to manage them.
I'm a bit confused on using SP files generated from LTSpice
.subckt DIFFAMP 9 10 1 13 16
.include TSMC_Model.txt
Vb1 12 13 1
Vb2 17 13 1
VGG1 1 8 2
VGG2 1 7 2
Ma 11 12 13 13 CMOSN
Mb1 5 9 11 13 CMOSN
Mb2 6 10 11 13 CMOSN
Mc1 2 7 5 13 CMOSN
Mc2 4 8 6 13 CMOSN
Md1 2 2 14 1 CMOSP
Md2 4 2 15 1 CMOSP
Me1 14 14 1 1 CMOSP
Me2 15 14 1 1 CMOSP
Ms1 1 4 16 13 CMOSN w = 30u l = 1u
Ms2 16 17 13 13 CMOSN w = 30u l = 1u
.ends DIFFAMP
here is my json file
{
"spectre_netlist" : "diffamp.sp",
"resultDir" : "./",
"techfile" : "../mockPDK/mock.techfile",
"simple_tech_file" : "../mockPDK/techfile.simple",
"lef" : "../mockPDK/mock.lef"
}
When i run it im consistantly getting the same errors so matter how much simple i try to make the netlist
root@967fe512b7be:/MAGICAL/examples/opamp# source run.sh
========================================================
MAGICAL: Machine Generated Analog IC Layout
https://github.com/magical-eda/MAGICAL
========================================================
[I] parameters = {'spectre_netlist': 'opamp.sp', 'hspice_netlist': None, 'simple_tech_file': '../mockPDK/techfile.simple', 'resultDir': './'}
Traceback (most recent call last):
File "../../flow/python/Magical.py", line 43, in <module>
db.parse() #parsing the input files
File "/MAGICAL/flow/python/MagicalDB.py", line 19, in parse
self.parse_input_netlist(self.params)
File "/MAGICAL/flow/python/MagicalDB.py", line 38, in parse_input_netlist
self.read_spectre_netlist(params.resultDir+params.spectre_netlist)
File "/MAGICAL/flow/python/MagicalDB.py", line 43, in read_spectre_netlist
self.designDB.read_spectre_netlist(sp_netlist)
File "/MAGICAL/flow/python/DesignDB.py", line 29, in read_spectre_netlist
nlp.parse_spectre(sp_netlist)
File "/MAGICAL/flow/python/DesignDB.py", line 307, in parse_spectre
self.raw_netlist = netlist.parseString(nl) # Parse the file into raw_netlist and then translate into database
File "/usr/local/lib/python3.7/site-packages/pyparsing.py", line 1955, in parseString
raise exc
File "/usr/local/lib/python3.7/site-packages/pyparsing.py", line 3814, in parseImpl
raise ParseException(instring, loc, self.errmsg, self)
pyparsing.ParseException: Expected end of text, found '.' (at char 47), (line:3, col:1)
Bit confused on how to use my own spice files, it seems like it only works when adhering to your examples.
Hello!Magical is a good job ! Now we want to use MAGICAL to realize the circuit designed by CSMS 250nm process, but when we change modify mock.techfile and techfile.simple in mockfile,it will report index error just as below.
May I ask whether MAGICAL supports modification for 250nm or how can we modify according to your two file examples, please give some suggestions,thank you very much! BEST WISHES!
MAGICAL: Machine Generated Analog IC Layout
https://github.com/magical-eda/MAGICAL
========================================================
[I] parameters = {'spectre_netlist': 'AMP.sp', 'hspice_netlist': None, 'simple_tech_file': '../28nmPDK/techfile.simple', 'resultDir': './'}
Traceback (most recent call last):
File "../../flow/python/Magical.py", line 43, in
db.parse() #parsing the input files
File "/MAGICAL/MAGICAL/flow/python/MagicalDB.py", line 20, in parse
self.parse_simple_techfile(self.params.simple_tech_file)
File "/MAGICAL/MAGICAL/flow/python/MagicalDB.py", line 31, in parse_simple_techfile
magicalFlow.parseSimpleTechFile( params, self.techDB)
IndexError: vector::_M_range_check: __n (which is 4294967295) >= this->size() (which is 500)
We are missing license for master branch.
After installation (master branch):
cd execution
source run.sh
leads to:
CIRCUIT = OTA_1
CIRCUIT_NAME = OTA_1
TOP_SCRIPT_DIR = /home/roba/perso/github/MAGICAL/execution
OTA_1: constraint generation
CIRCUIT = results/OTA_1/OTA_1.sp
CIRCUIT_NAME = OTA_1
CIRCUIT_EXTENSION = sp
CUR_SCRIPT_DIR = /home/roba/perso/github/MAGICAL/execution
OTA_1: Parsing spectre netlist and device generation
python: can't open file '/home/roba/perso/github/MAGICAL/execution/../python/devgen.py': [Errno 2] No such file or directory
O
In my local repo:
find . -name devgen.py
./install/constraint_generation/python/devgen.py
./constraint_generation/python/devgen.py
Please add submodules of constraint generation and device generation to the master branch. And change the corresponding codes in the flow.
THe latest version of MAGICAL (VERSION-0.5 apparently) is missing a Include.mk file.
Running make at top level fails with the error message :
Makefile:10: /home/ronan/perso/github/MAGICAL-v0.5/Include.mk: No such file or directory
Traceback (most recent call last):
File "../../flow/python/Magical.py", line 10, in
import Params, MagicalDB, Flow
File "/home/zxt/MAGICAL/flow/python/MagicalDB.py", line 8, in
import DesignDB
File "/home/zxt/MAGICAL/flow/python/DesignDB.py", line 8, in
import magicalFlow
ImportError: /home/zxt/.local/lib/python3.8/site-packages/magicalFlow.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZTI12gzstreambase
Have you considered using the new SkyWater PDK released by Google? There is an free (as in beer) shuttle for free (as in freedom) designs coming up in november and multiple more next year.
The analog primitive spice models should be released real soon and you can contact me at either [email protected] or [email protected] if you want to get early access to them. Otherwise sign up to the announcement mailing list and/or join the slack channel to be informed when they are publically available.
You can see the start of the public documentation around the analog models in the draft pull request at google/skywater-pdk#136 and https://skywater-pdk--136.org.readthedocs.build/en/136/rules/device-details.html
Looking forward to seeing what you can do!
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.