Andy said:
Given enough time and effort, I'm convinced anything can be done in
Emacs.
You'd need:
a tool to create/invoke "anonymous" signal names (I think this is a
bad idea, see below.)
a tool to easily create/invoke/manage attributes on signals, ports and
component/entity instances.
a tool to generate a (good) schematic drawing of your design (required
output for most customers)
a tool to manage/hide non-critical attributes to reduce clutter for
review.
a tool to do things like "find all the 1.1K 0603 resistors, and change
them to 1.0K 0402 resistors"
...and many more I can't think of until I need it and don't have it.
It's already done in a good schematic editor.
I can do most of these in Emacs expect for the schematic generation. I
would use this flow for my own projects. For external customers this
is probably not a suitable flow. I've never seen a good automatic
schematic drawings (I've seen lots of Synopsys Design Compiler
PostScript output which does not look that great).
Keep in mind what I said earlier: "I'm thinking mostly of simple
digital designs where larger parts like processor, memory, FPGA, etc.
are being instantiated"
Regarding "anonymous" wires: in a schematic, it is easy enough to see
what pins a short, unnamed wire connects. In HDL, you have to find the
name, and then find the matching name somewhere else. A schematic page
As I said, I prefer Verilog here since they can be right next to the
instance in the file. I could write/generate something like this in my
HDL netlist:
processor cpu (.addr(addr),
....
wire res109_to_addr_15;
resistor r109 (.t1(res109_to_addr_15),.t2(addr[15]));
.....
Which I don't think is that bad.
size viewer. Trust me, I've spent enough time tracking through
netlists with machine-generated net names to know this ain't gonna be
pretty.
I've also traced lots of post synthesis/PAR netlsts which have been
hacked by BIST tools, by ATPG tools etc. But I have always used some
programs or Emacs functions to trace the netlist. However, a flattened
FPGA netlist with n000000N style netnames and u00000U style instance
names connecting 80.000 LUT's is quite different than what I have in
mind for a hand written HDL netlist at the top level.
Last week I actually requested an EDIF netlist export from a board
design engineer. I find it easier to trace signals in the EDIF file
than browsing the 65 page PDF file containing the schematics. But
since my favorite programming language is Common Lisp I have a toolbox
of programs to search and transfer sexps which EDIF is based upon.
However, I think I'm the only one that have this preference. We're all
different.
Cadence Design Entry HDL (FKA Concept-HDL) creates logical verilog and
vhdl netlists from the schematic. Then the packager (assembler/
netlister) uses the verilog netlist for its input to generate the
physical netlist for board layout.
So, theoretically you could code verilog and get a netlist to dump
into Allegro for board layout and routing.
Theoretically you can probably do it in any PCB package as long as you
can generate the right structure and use the right format for the
netlist. The problem is that this is not a supported flow and it's not
documented so you have to sort of reverse engieer the whole thing.
Actually I did something similar in the late 80's. I wrote a program
to flatten Verilog netlists and convert them into Dazix netlist format
which was used to produce the PCB. In this case I was given some
documentation for the Dazix netlist format. This was actually used for
a design of a UNIX computer. However, I haven't done anything similar
since.
Petter