Re: [NEW] cad/qflow

2020-07-02 Thread Alessandro De Laurenzis

Still another ping.

This is already ok sthen@ to import (but not yet in the tree).

Any other developer available to give it a try? Tarball re-attached.

On 26/06/2020 18:19, Stuart Henderson wrote:

This is OK sthen@ to import.


On 2020/06/26 16:35, Alessandro De Laurenzis wrote:

Weekly ping.

Tarball re-attached for your convenience.

While there, I changed the master site from Github to
opencircuitdesign.com (so we can avoid the on-the-fly generated
archive).

If you would like to play a bit with the port:
- make a new directory (e.g. ./qflow-trial) and copy there the enclosed
   map9v3.v file;
- change to that dir and run 'qflow gui';
- in the 'synthesys preparation' tab:
 * select map9v3.v as Verilog source file;
 * the 'Verilog module' field will be updated automatically;
 * click on 'Set stop' after every synthesis step;
- click on 'Run' in the 'Preparation' row;
- then run the other steps in sequence;
- starting after the 'Placement', you'll be able to see the layout
   clicking on 'Edit Layout' (type 'v' in Magic window to see the full
   view).




--
Alessandro De Laurenzis
[mailto:jus...@atlantide.mooo.com]
Web: http://www.atlantide.mooo.com
LinkedIn: http://it.linkedin.com/in/delaurenzis


qflow-1.4.83.tar.gz
Description: application/gzip


Re: [NEW] cad/qflow

2020-06-26 Thread Stuart Henderson
This is OK sthen@ to import.


On 2020/06/26 16:35, Alessandro De Laurenzis wrote:
> Weekly ping.
> 
> Tarball re-attached for your convenience.
> 
> While there, I changed the master site from Github to
> opencircuitdesign.com (so we can avoid the on-the-fly generated
> archive).
> 
> If you would like to play a bit with the port:
> - make a new directory (e.g. ./qflow-trial) and copy there the enclosed
>   map9v3.v file;
> - change to that dir and run 'qflow gui';
> - in the 'synthesys preparation' tab:
> * select map9v3.v as Verilog source file;
> * the 'Verilog module' field will be updated automatically;
> * click on 'Set stop' after every synthesis step;
> - click on 'Run' in the 'Preparation' row;
> - then run the other steps in sequence;
> - starting after the 'Placement', you'll be able to see the layout
>   clicking on 'Edit Layout' (type 'v' in Magic window to see the full
>   view).



Re: [NEW] cad/qflow

2020-06-26 Thread Alessandro De Laurenzis

Just a note:

On 26/06/2020 16:35, Alessandro De Laurenzis wrote:
[...]

If you would like to play a bit with the port:
- make a new directory (e.g. ./qflow-trial) and copy there the enclosed
   map9v3.v file;
- change to that dir and run 'qflow gui';
- in the 'synthesys preparation' tab:
 * select map9v3.v as Verilog source file;
 * the 'Verilog module' field will be updated automatically;
 * click on 'Set stop' after every synthesis step;


If you want to avoid issues with default settings during routing step,
please select 'osu035' in the 'Technology' tab.


- click on 'Run' in the 'Preparation' row;
- then run the other steps in sequence;
- starting after the 'Placement', you'll be able to see the layout
   clicking on 'Edit Layout' (type 'v' in Magic window to see the full
   view).

On 21/06/2020 16:40, Tim Edwards wrote:

Hello Alessandro,


OSU   050/035/018 tech files have a proprietary license that says:
   [...]
   "Permission to use, copy, and modify this software and its
documentation for research and educational purposes only and without   fee
or royalty is hereby granted..."
   [...]
   I don't know if this is too restrictive; if so, we should probably
split the package; please let me know how to proceed;


This should not be a problem.  The technologies are based on the MOSIS
SCMOS technologies (see www.mosis.com).  Specifically, the process
technology file for Magic is designed to be submitted to MOSIS for use
with the TSMC foundry.  However, as of about two years ago, MOSIS stopped
supporting the SCMOS technology description for TSMC.  Therefore, designs
using these cells are, for all intents and purposes, purely educational,
as there is no way to fabricate such a design.

 Regards,
 Tim

++-+
| R. Timothy Edwards (Tim)   | email: t...@opencircuitdesign.com|
| Open Circuit Design| web:   http://opencircuitdesign.com |
| 19601 Jerusalem Road   | phone: (240) 489-3255   |
| Poolesville, MD 20837  | cell:  (408) 828-8212   |
++-+




--
Alessandro De Laurenzis
[mailto:jus...@atlantide.mooo.com]
Web: http://www.atlantide.mooo.com
LinkedIn: http://it.linkedin.com/in/delaurenzis



Re: [NEW] cad/qflow

2020-06-26 Thread Alessandro De Laurenzis

Weekly ping.

Tarball re-attached for your convenience.

While there, I changed the master site from Github to
opencircuitdesign.com (so we can avoid the on-the-fly generated
archive).

If you would like to play a bit with the port:
- make a new directory (e.g. ./qflow-trial) and copy there the enclosed
  map9v3.v file;
- change to that dir and run 'qflow gui';
- in the 'synthesys preparation' tab:
* select map9v3.v as Verilog source file;
* the 'Verilog module' field will be updated automatically;
* click on 'Set stop' after every synthesis step;
- click on 'Run' in the 'Preparation' row;
- then run the other steps in sequence;
- starting after the 'Placement', you'll be able to see the layout
  clicking on 'Edit Layout' (type 'v' in Magic window to see the full
  view).

On 21/06/2020 16:40, Tim Edwards wrote:

Hello Alessandro,


OSU   050/035/018 tech files have a proprietary license that says:
   [...]
   "Permission to use, copy, and modify this software and its
documentation for research and educational purposes only and without   fee
or royalty is hereby granted..."
   [...]
   I don't know if this is too restrictive; if so, we should probably
split the package; please let me know how to proceed;


This should not be a problem.  The technologies are based on the MOSIS
SCMOS technologies (see www.mosis.com).  Specifically, the process
technology file for Magic is designed to be submitted to MOSIS for use
with the TSMC foundry.  However, as of about two years ago, MOSIS stopped
supporting the SCMOS technology description for TSMC.  Therefore, designs
using these cells are, for all intents and purposes, purely educational,
as there is no way to fabricate such a design.

 Regards,
 Tim

++-+
| R. Timothy Edwards (Tim)   | email: t...@opencircuitdesign.com|
| Open Circuit Design| web:   http://opencircuitdesign.com |
| 19601 Jerusalem Road   | phone: (240) 489-3255   |
| Poolesville, MD 20837  | cell:  (408) 828-8212   |
++-+


--
Alessandro De Laurenzis
[mailto:jus...@atlantide.mooo.com]
Web: http://www.atlantide.mooo.com
LinkedIn: http://it.linkedin.com/in/delaurenzis


qflow-1.4.83.tar.gz
Description: application/gzip
/* 
 *--
 * This module converts a counter value N into a reset value
 * for an 8-bit LFSR.  The count is initialized by "reset" high
 * or "start" transition high.  When the count is valid, it is
 * latched into "dp" and the signal "done" is raised to indicate
 * a valid new value of "dp".
 *--
 */

module map9v3(clock, reset, start, N, dp, done, counter, sr);

input clock;
input   start; // run at rising edge of start
input   reset; // high is reset case ( run after reset)
input   [8:0] N; // the number to divide by

output  [8:0] dp;  // these outputs drive an LFSR counter
output   done;
output [7:0] counter;
output  [7:0] sr;

reg [8:0] dp;
reg [7:0] sr;
reg [7:0] counter;
reg [1:0] startbuf;
reg   done;
reg [2:0] state;

parameter INIT   = 3'b000;
parameter RUN   = 3'b001;
parameter ALMOSTDONE  = 3'b010;
parameter DONE   = 3'b011;
parameter WAIT   = 3'b100;


always @(posedge clock or posedge reset) begin

if (reset == 1) begin

 dp <= 9'b0;
 sr <= 8'b0;
 counter <= 8'b0;
 startbuf <= 2'b00;
 done <= 0;
 state <= INIT;

end else begin

 if (state == INIT) begin
 counter <= 255 - N[8:1] + 3;
 sr <= 8'b0;
 done <= 0;
 state <= RUN;

 end else if (state == RUN) begin
 sr[7] <= sr[6];
 sr[6] <= sr[5];
 sr[5] <= sr[4];
 sr[4] <= sr[3];
 sr[3] <= sr[2];
 sr[2] <= sr[1];
 sr[1] <= sr[0];
 sr[0] <= ~(sr[7] ^ sr[5] ^ sr[4] ^ sr[3]);
 counter <= counter - 1;
 if (counter == 0) begin
state <= ALMOSTDONE;
 end

 end else if (state == ALMOSTDONE) begin
 dp[0] <= N[0];
 dp[8:1] <= sr[7:0];
 state <= DONE;

 end else if (state == DONE) begin
 done <= 1;
 state <= WAIT;

 end else if (state == WAIT) begin
 if (startbuf == 2'b01) begin
  state <= INIT;
 end
 end

 startbuf <= {startbuf[0], start};
end
end

endmodule


[NEW] cad/qflow

2020-06-21 Thread Alessandro De Laurenzis

Greetings,

This is a proposal for a new port: cad/qflow, a full end-to-end digital 
synthesis flow for VLSI ASIC designs.


DESCR
=
A digital synthesis flow is a set of tools and methods used to turn a
VLSI design written in a high-level behavioral language like Verilog
or VHDL into a physical circuit, which can either be configuration code
for an FPGA target or a layout in a specific technology, that would
become part of an IC.
Qflow uses a complete and open source tool chain for synthesizing
digital circuits starting from Verilog source and ending in physical
layout for a specific target fabrication process.

I started working on this port more than two years ago, firstly 
importing the whole toolchain:

- cad/abc
- cad/yosys
- cad/graywolf
- cad/opensta
- cad/qrouter
- cad/magic
- cad/netgen
and then actively cooperating with upstream (which I'm adding in CC; Tim
always reacted very promptly to my questions/suggestions/proposals; 
thanks Tim!) in order to make all the scripts and executables properly 
working on OpenBSD platforms; it took a while, but finally this version 
is stable enough I think.


Some comments on the port:
- I patched scripts/magic_view.sh and scripts/qflow_manager.py.in, in 
  order to use OpenGL as default rendering for cad/magic (instead of 
  XR/Cairo, which is not working on OpenBSD, see [1]);


- scripts/qrouter.sh requires a patch to use GNU grep instead of base 
  version;


- src/readlef.h requires __compar_fn_t definition for non-Linux 
  platforms (I'll discuss this point with upstream soon);


- other patches are trivial;

- license line is complex (as usual, when technology files are 
  included...); upstream didn't add any license files, so I specified 
  where to find the info; gscl45nm has been released under the Apache-2 
  license, so I see no problem in redistributing the files; OSU 
  050/035/018 tech files have a proprietary license that says:

  [...]
  "Permission to use, copy, and modify this software and its 
  documentation for research and educational purposes only and without 
  fee or royalty is hereby granted..."

  [...]
  I don't know if this is too restrictive; if so, we should probably 
  split the package; please let me know how to proceed; qflow itself has 
  a "GPL Copyright" (see README file in the distribution tarball), but 
  no applicable license version is specified;


- 'package' target flags the following warnings:
  [...]
  Creating package qflow-1.4.83
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/abc
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/yosys-abc
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/graywolf
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/graywolf
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/magic
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/magic
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/netgen
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/netgen
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/qrouter
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/qrouter
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/sta
  /usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/sta
  Warning: symlink(s) point to non-existent 
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/bin/yosys
  
/usr/ports/pobj/qflow-1.4.83/fake-amd64/usr/local/share/qflow/bin/yosys
  [...]
  but I think this is normal, we should accept those messages (or please 
  advice how to get rid of them otherwise).


Tested on amd64 only. Taking MAINTAINER. Tarball attached.

[1] https://marc.info/?l=openbsd-ports&m=158363208902918&w=2

--
Alessandro De Laurenzis
[mailto:jus...@atlantide.mooo.com]
Web: http://www.atlantide.mooo.com
LinkedIn: http://it.linkedin.com/in/delaurenzis


qflow-1.4.83.tar.gz
Description: application/tar-gz