Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMar2019

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 160400

Article: 160400
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Fri, 12 Jan 2018 10:25:26 -0800 (PST)
Links: << >>  << T >>  << A >>
On Wednesday, January 10, 2018 at 5:56:45 PM UTC-8, Weng Tianxiang wrote:
> Hi,
>=20
> A wive-pipelined circuit has the same logic as its pipeline counterpart e=
xcept that the wive-pipelined circuit has only one stage, a critical path f=
rom the input register passing through a piece of computational logic to th=
e output register, and no intermediate registers.
>=20
> My invention kernel idea is: A designer provides the least information an=
d logic code about the critical path, and leave all complex logic designs t=
o a synthesizer and a system library that is what an HDL should do.
>=20
> All coding has 3 steps:
> 1. Write a Critical Path Component (CPC) with defined interface;
>=20
> 2. Call a Wave-Pipelining Component (WPC) provided by a system library;
>=20
> 3. Call one of 3 link statement to link a CPC instantiation with a paired=
 WPC instantiation to specify what your target is.
>=20
> Here is the all code on a 64*64 bits signed integer multiplier C <=3D A*B=
.
>=20
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.numeric_std.all;
> use work.wave_pipeline_package.all;
>=20
> -- CPC code for wave-pipelined 64-bit signed integer multiplier C <=3D A*=
B
> -- CPC_1_2 is linked with SMB by link1() / link2() if "wave" is accepted =
in VHDL
> -- link1(): generation would fail if the circuit cannot accept 1 data per=
 cycle
> -- link2(): generation never fails and the circuit is capable of acceptin=
g 1 data per=20
> -- INPUT_CLOCK_NUMBER cycles
>=20
> entity CPC_1_2 is=20
>    generic (  =20
>       input_data_width  : positive  :=3D 64;                  -- optional
>       output_data_width : positive  :=3D 128                  -- optional
>    );
>    port (
>       CLK   :  in std_logic;
>       WE_i  :  in std_logic;     -- '1': write enable to input registers =
A & B=20
>       Da_i  :  in signed(input_data_width-1 downto 0);      -- input data=
 A
>       Db_i  :  in signed(input_data_width-1 downto 0);      -- input data=
 B
>       WE_o_i:  in std_logic;  -- '1': write enable to output register C
>       Dc_o  :  out unsigned(output_data_width -1 downto 0)  -- output dat=
a C
>    );
> end CPC_1_2;
>=20
> architecture A_CPC_1_2 of CPC_1_2 is
>    signal   Ra :  signed(input_data_width-1 downto 0);  -- input register=
 A
>    signal   Rb :  signed(input_data_width-1 downto 0);  -- input register=
 B
>    signal   Rc :  signed(output_data_width-1 downto 0); -- output registe=
r C
>    signal   Cl :  signed(output_data_width-1 downto 0); -- combinational =
logic
>   =20
> begin
>    Cl    <=3D Ra * Rb;             -- combinational logic output, key par=
t of CPC
>    Dc_o  <=3D unsigned(Rc);        -- output through output register
>=20
>    p_1 : process(CLK)
>    begin
>       if Rising_edge(CLK) then
>          if WE_i =3D '1' then      -- WE_i =3D '1' : latch input data
>             Ra <=3D Da_i;
>             Rb <=3D Db_i;
>          end if;
>         =20
>          if WE_O_I =3D '1' then    -- WE_O_I =3D '1': latch output data
>             Rc <=3D Cl;
>          end if;
>       end if;
>    end process;
>=20
> -------------------------------------------------------------------------=
-------
>=20
> end A_CPC_1_2;
>=20
> In summary, after HDL adopting my system, writing a wave-pipelined circui=
t is simple as writing a one-cycle logic circuit.
>=20
> Thank you.
>=20
> Weng

Hi,

The following information is from Wikipedia:

1. The Intel 8087, announced in 1980, was the first x87 floating-point copr=
ocessor for the 8086 line of microprocessors.

2. MMX is a single instruction, multiple data (SIMD) instruction set design=
ed by Intel, introduced in 1997 with its P5-based Pentium line of microproc=
essors, designated as "Pentium with MMX Technology".[1] It developed out of=
 a similar unit introduced on the Intel i860,[2] and earlier the Intel i750=
 video pixel processor. MMX is a processor supplementary capability that is=
 supported on recent IA-32 processors by Intel and other vendors.

MMX has subsequently been extended by several programs by Intel and others:=
 3DNow!, Streaming SIMD Extensions (SSE), and ongoing revisions of Advanced=
 Vector Extensions (AVX).

8087's floating 64-bit multiplier needs 5 cycles to finish a data processin=
g with one input data per cycle.

MMX floating 64-bit floating multiplier needs 4 cycles to finish a data pro=
cessing with one set of input data per 2 cycles.

Because each multiplier needs one multiplicand A and one multiplier B to ge=
t the result C, so naturally many testing benches claim MMX 64-bit floating=
 multiplier is 20% faster than 8087 (4 cycles vs 5 cycles).

With my invention, any college students with knowledge of HDL can write a M=
MX wave-pipelined 64-bit floating multiplier within half an hour under foll=
owing conditions:

1. My invented system is fully accepted to HDL;

2. Synthesizer manufacturers have updated their products to handle the gene=
ration of related wave-pipelined circuits.
All related technology and algorithms are available off selves.

3. It needs time.

One of wonderful wave-pipelined circuits I think may be 16 channels FFT pro=
cessor with wave-pipelined technology: the benefits are faster running freq=
uency and a lot of saving in respect of logic area and power consumption.

Thank you.

Weng


Article: 160401
Subject: Re: HDL simple survey - what do you actually use
From: john p <john.providenza@gmail.com>
Date: Fri, 12 Jan 2018 19:09:37 -0800 (PST)
Links: << >>  << T >>  << A >>
On Wednesday, January 10, 2018 at 6:17:32 AM UTC-8, john wrote:
> I'm trying to decide on which to use for a project as the main default  that may 
> include a number of freelance people.
> 
> can you say which of these you actually use (the most)
> and have the best skills in
> 
> Verilog 
> systemVerilog
> SystemC
> VHDL
> Other
> 
> And if possible what type of work you use it for in general
> I dont need to know why you use a particular one - and to avoid 
> flame wars request you dont explain that.
> 
> I'm just trying to get a general feel for what people here use regularly.
> 
> TIA
> 
> -- 
> 
> john
> 
> =========================
> http://johntech.co.uk
> =========================

Verilog, Verilog, Verilog.

I've been consulting for over 24 years now and I now focus exclusively on Verilog for a variety of reasons.

I've seen the Verilog vs VHDL discussion many times, it boils down to either a religious or toothpaste debate - what were you raised with or what flavor do you prefer.

I've found I am *much* more productive in Verilog.

At this point, I don't take on jobs in VHDL.  

My $0.02.

John P

Article: 160402
Subject: Re: HDL simple survey - what do you actually use
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Sat, 13 Jan 2018 02:57:43 -0500
Links: << >>  << T >>  << A >>
john p wrote on 1/12/2018 10:09 PM:
> On Wednesday, January 10, 2018 at 6:17:32 AM UTC-8, john wrote:
>> I'm trying to decide on which to use for a project as the main default  that may
>> include a number of freelance people.
>>
>> can you say which of these you actually use (the most)
>> and have the best skills in
>>
>> Verilog
>> systemVerilog
>> SystemC
>> VHDL
>> Other
>>
>> And if possible what type of work you use it for in general
>> I dont need to know why you use a particular one - and to avoid
>> flame wars request you dont explain that.
>>
>> I'm just trying to get a general feel for what people here use regularly.
>>
>> TIA
>>
>> --
>>
>> john
>>
>> =========================
>> http://johntech.co.uk
>> =========================
>
> Verilog, Verilog, Verilog.
>
> I've been consulting for over 24 years now and I now focus exclusively on Verilog for a variety of reasons.
>
> I've seen the Verilog vs VHDL discussion many times, it boils down to either a religious or toothpaste debate - what were you raised with or what flavor do you prefer.
>
> I've found I am *much* more productive in Verilog.
>
> At this point, I don't take on jobs in VHDL.
>
> My $0.02.

I met a guy in another forum who said not only he, but a number of people he 
has shown to use Verilog at work are much more productive.  I've heard that 
there are various defaults in Verilog that are real gotchas unless you know 
about them.  But no one has been able to point me to a book that describes 
these issues.  Can you suggest a good Verilog book that covers these 
details?  It doesn't have to be a beginner's book as I am pretty experienced 
in HDL and have even done some work in Verilog.  I just want to get to the 
point that I won't be making student mistakes in my designs.  Well, at least 
no more than I do in VHDL.

-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998

Article: 160403
Subject: Re: HDL simple survey - what do you actually use
From: Thomas Heller <theller@ctypes.org>
Date: Sat, 13 Jan 2018 12:29:09 +0100
Links: << >>  << T >>  << A >>
Am 10.01.2018 um 15:17 schrieb john:
> 
> I'm trying to decide on which to use for a project as the main default  that may 
> include a number of freelance people.
> 
> can you say which of these you actually use (the most)
> and have the best skills in
> 
> Verilog 
> systemVerilog
> SystemC
> VHDL
> Other
> 

Is use MyHDL which gets translated into VHDL for synthesis.

Thomas

Article: 160404
Subject: Re: Now - not so new cheaper FPGAs
From: Thomas Heller <theller@ctypes.org>
Date: Sat, 13 Jan 2018 12:31:07 +0100
Links: << >>  << T >>  << A >>
Am 10.01.2018 um 19:32 schrieb rickman:
> I have used the Lattice XP3 FPGAs in a design I've made a lot of money
> from.  The parts have gone EOL but Arrow bought some 70,000+ and is
> still trying to get rid of them.  Seems they over estimated the market. 
> I had to pay a higher price to them in 2016 than I paid when they were
> in production (~$10) but now they are going for around $5-$6 depending
> on quantity and they still have 65,000.  lol
> 
> I wonder how cheap they would sell the lot?
> 
> With that many left in inventory, this might be a good chip to design a
> low priced hobby board from, like the TinyFPGA, but cheaper, although
> there are boards on eBay using the Altera EP2C5 with half again as many
> LUTs plus 13 multipliers.  The board is only $15 or $18 with a
> programming cable.
> 

The firmware-only USB implementation on the TInyFPGA got me interested
in them.  I now have 2 on my desk.  Thanks for the heads-up.

Thomas

Article: 160405
Subject: Re: HDL simple survey - what do you actually use
From: BobH <wanderingmetalhead.nospam.please@yahoo.com>
Date: Sat, 13 Jan 2018 09:08:09 -0700
Links: << >>  << T >>  << A >>
On 01/13/2018 12:57 AM, rickman wrote:
> I met a guy in another forum who said not only he, but a number of 
> people he has shown to use Verilog at work are much more productive.  
> I've heard that there are various defaults in Verilog that are real 
> gotchas unless you know about them.  But no one has been able to point 
> me to a book that describes these issues.  Can you suggest a good 
> Verilog book that covers these details?  It doesn't have to be a 
> beginner's book as I am pretty experienced in HDL and have even done 
> some work in Verilog.  I just want to get to the point that I won't be 
> making student mistakes in my designs.  Well, at least no more than I do 
> in VHDL.
> 

The best Verilog reference book that I have found is "Verilog HDL A 
Guide to Digital Design and Synthesis" by Samir Palnitkar. It is good 
enough that it lives in my book bag to get hauled to work every day (and 
shows it now). This is not really a beginners book, and it is not 
perfect, but it is the best that I have found. There are at least two 
editions of this out and there may be more. The second edition is the 
one that is most useful to me.

For syntax questions, Stuart Sutherland's "Verilog HDL Quick Reference 
Guide" is excellent. This document can be downloaded from Mr 
Sutherland's web site. I work in Verilog and C depending on the phase of 
the project that I am in (FPGA or firmware). Swapping between Verilog 
and C means that looking up the exact syntax is necessary, especially 
around the transitions.

BobH

Article: 160406
Subject: Re: HDL simple survey - what do you actually use
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Sat, 13 Jan 2018 16:28:14 -0500
Links: << >>  << T >>  << A >>
BobH wrote on 1/13/2018 11:08 AM:
> On 01/13/2018 12:57 AM, rickman wrote:
>> I met a guy in another forum who said not only he, but a number of people
>> he has shown to use Verilog at work are much more productive.  I've heard
>> that there are various defaults in Verilog that are real gotchas unless
>> you know about them.  But no one has been able to point me to a book that
>> describes these issues.  Can you suggest a good Verilog book that covers
>> these details?  It doesn't have to be a beginner's book as I am pretty
>> experienced in HDL and have even done some work in Verilog.  I just want
>> to get to the point that I won't be making student mistakes in my
>> designs.  Well, at least no more than I do in VHDL.
>>
>
> The best Verilog reference book that I have found is "Verilog HDL A Guide to
> Digital Design and Synthesis" by Samir Palnitkar. It is good enough that it
> lives in my book bag to get hauled to work every day (and shows it now).
> This is not really a beginners book, and it is not perfect, but it is the
> best that I have found. There are at least two editions of this out and
> there may be more. The second edition is the one that is most useful to me.
>
> For syntax questions, Stuart Sutherland's "Verilog HDL Quick Reference
> Guide" is excellent. This document can be downloaded from Mr Sutherland's
> web site. I work in Verilog and C depending on the phase of the project that
> I am in (FPGA or firmware). Swapping between Verilog and C means that
> looking up the exact syntax is necessary, especially around the transitions.

Do either of these books cover the defaults issue I mention above?  I have 
coded in Verilog by copying from existing work and that has worked pretty 
well for me.  But that was in a day job where I had people I could ask for 
help if I didn't understand something and it only lasted a few months.  To 
use Verilog on my own I would want to be sure I wasn't embedding any time 
bombs that would rear its ugly head after the design had been handed off to 
a customer.  Of course, that's always possible from logic errors, but I'm 
talking about misuse of the language.  I'd like a reference book that 
clearly identifies these potential problems.

-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998

Article: 160407
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: "Rick C. Hodgin" <rick.c.hodgin@gmail.com>
Date: Sat, 13 Jan 2018 13:31:14 -0800 (PST)
Links: << >>  << T >>  << A >>
Do you have a YouTube example?  And an example that wil 
synthesize in Icarus?  So we can see your method compares to a
standard example.

-- 
Rick C. Hodgin 

Article: 160408
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Sat, 13 Jan 2018 14:55:44 -0800 (PST)
Links: << >>  << T >>  << A >>
On Saturday, January 13, 2018 at 1:31:17 PM UTC-8, Rick C. Hodgin wrote:
> Do you have a YouTube example?  And an example that wil=20
> synthesize in Icarus?  So we can see your method compares to a
> standard example.
>=20
> --=20
> Rick C. Hodgin

Hi Rick,

Actually I have got 3 patents issued for the subject:=20

1. 9,747,252: Systematic method of coding wave-pipelined circuits in HDL.
2. 9,734,127: Systematic method of synthesizing wave-pipelined circuits in =
HDL.
3. 9,575,929: Apparatus of wave-pipelined circuits.

All 3 patents have the same specification, drawings, abstract with differen=
t claims

Here is my new non-provisional patent application 15,861,093 (application, =
hereafter), "Coding wave-pipelined circuits with buffering function in HDL"=
, filed to USPTO on 2018/01/03.=20

The non-provisional patent application 15,861,093 has a *txt (*.vhd) file a=
ttached so that they are not secrets and any persons who are interested in =
the subject can email me to get what he wants, I would email the file set t=
o him, even full application set will be published 18 months later.

The following is part of my sell-promotional file to some big companies:

"The new application can be viewed in some extents as the continuation of t=
he 3 patents logically, but legally it is a brand new invention devoting th=
e main attention to coding buffering function for wave-pipelined circuits i=
n HDL, a topic never mentioned in the 3 patents, while it is still paying g=
reat attention to improve the 3 patents to make them more robust, friendlie=
r and more complete in point of view from coding designers."=20

In the 3 previous patents a first version of source code was attached, the =
new application provides the second version. With the 2nd version of VHDL s=
ource code available you can use a VHDL-2002 or above simulator to simulate=
 all workings and generate waves. The source file is also well noted with i=
nserted debugging function code.

Please email me what you want me to send:
for 3 patents:
1.1 Specification=20

1.2. 3 sets of claims.

1.3. Drawings.

1.4. Source code.

1.5. ZIP file of all above.

For new application:
2.1 Specification.

2.2. claims.

2.3. Drawings.

2.4. Abstract.

2.5. Source code.

2.6. ZIP file of all above.

For the new application, specification has 81 pages, 48 claims have 15 page=
s and drawings have 24 pages.

If you lack time, the best way to learn all working structures needs only 2=
.1 Specification; 2.3. Drawings; and 2.4. Abstract.

Because the target of my patents and new application is a) to make my inven=
ted system as part of HDL (not only VHDL, but all languages in HDL), and b)=
 to make the source code as part of system library in HDL, I am willing to =
distribute my code and all related files to any persons who are really inte=
rested in how I did it.

Through CPC_1_2 you may know that my scheme needs the least logic informati=
on and coding from a designer to resolve a very difficult problem, an almos=
t 50-years open problem.=20

My Email address is wtx wtx @ gmail . com (please remove spaces between cha=
racters)

Thank you.

Weng



Article: 160409
Subject: Re: Now - not so new cheaper FPGAs
From: Theo Markettos <theom+news@chiark.greenend.org.uk>
Date: 16 Jan 2018 09:55:28 +0000 (GMT)
Links: << >>  << T >>  << A >>
rickman <gnuarm.deletethisbit@gmail.com> wrote:
> I have used the Lattice XP3 FPGAs in a design I've made a lot of money from. 
>   The parts have gone EOL but Arrow bought some 70,000+ and is still trying 
> to get rid of them.  Seems they over estimated the market.  I had to pay a 
> higher price to them in 2016 than I paid when they were in production (~$10) 
> but now they are going for around $5-$6 depending on quantity and they still 
> have 65,000.  lol
> 
> I wonder how cheap they would sell the lot?

A while back Farnell had some ECP2 on clearance for about GBP1 each in 1-off.
I bought a few dozen, not for their FPGA capability but because I wanted to
try BGA soldering and they were the cheapest large (256 pin) BGA I could
find.

I don't remember how many they had in stock at the time, but probably about
1K.  I didn't have a use for 1K at the time.

> With that many left in inventory, this might be a good chip to design a low 
> priced hobby board from, like the TinyFPGA, but cheaper, although there are 
> boards on eBay using the Altera EP2C5 with half again as many LUTs plus 13 
> multipliers.  The board is only $15 or $18 with a programming cable.

I'm confused by their branding - is it the same as the MachXO3 or ECP3?
If they have SERDES that could get very interesting.

I'm sceptical whether cutting $5 from the price of a comparable low-end
board is going to stimulate much further demand.  Are there lots of people
who have the skills to get into FPGA design but are held up by lacking $5? 
To me the barriers seem to be tools and languages, not the price of the
hardware.

If there was some killer app - like Kodi is for RPi - that could be
packaged up and would sell lots of boards to people who don't have to use
FPGA tools, things would be different.

Theo

Article: 160410
Subject: Re: HDL simple survey - what do you actually use
From: BobH <wanderingmetalhead.nospam.please@yahoo.com>
Date: Tue, 16 Jan 2018 07:45:18 -0700
Links: << >>  << T >>  << A >>
On 01/13/2018 02:28 PM, rickman wrote:
> BobH wrote on 1/13/2018 11:08 AM:
>> On 01/13/2018 12:57 AM, rickman wrote:
>>> I met a guy in another forum who said not only he, but a number of 
>>> people
>>> he has shown to use Verilog at work are much more productive.  I've 
>>> heard
>>> that there are various defaults in Verilog that are real gotchas unless
>>> you know about them.  But no one has been able to point me to a book 
>>> that
>>> describes these issues.  Can you suggest a good Verilog book that covers
>>> these details?  It doesn't have to be a beginner's book as I am pretty
>>> experienced in HDL and have even done some work in Verilog.  I just want
>>> to get to the point that I won't be making student mistakes in my
>>> designs.  Well, at least no more than I do in VHDL.
>>>
>>
>> The best Verilog reference book that I have found is "Verilog HDL A 
>> Guide to
>> Digital Design and Synthesis" by Samir Palnitkar. It is good enough 
>> that it
>> lives in my book bag to get hauled to work every day (and shows it now).
>> This is not really a beginners book, and it is not perfect, but it is the
>> best that I have found. There are at least two editions of this out and
>> there may be more. The second edition is the one that is most useful 
>> to me.
>>
>> For syntax questions, Stuart Sutherland's "Verilog HDL Quick Reference
>> Guide" is excellent. This document can be downloaded from Mr Sutherland's
>> web site. I work in Verilog and C depending on the phase of the 
>> project that
>> I am in (FPGA or firmware). Swapping between Verilog and C means that
>> looking up the exact syntax is necessary, especially around the 
>> transitions.
> 
> Do either of these books cover the defaults issue I mention above?  I 
> have coded in Verilog by copying from existing work and that has worked 
> pretty well for me.  But that was in a day job where I had people I 
> could ask for help if I didn't understand something and it only lasted a 
> few months.  To use Verilog on my own I would want to be sure I wasn't 
> embedding any time bombs that would rear its ugly head after the design 
> had been handed off to a customer.  Of course, that's always possible 
> from logic errors, but I'm talking about misuse of the language.  I'd 
> like a reference book that clearly identifies these potential problems.
> 

I am not sure that there is a quick answer to what you are looking for.

Sutherland's Guide book is extremely short and tightly written (about 48 
pages), it is written to provide quick answers on utilizing each 
language element. While extremely useful, I don't think it will have the 
answers you are looking for. You can download the whole thing for free 
from his site:

http://sutherland-hdl.com/books_and_guides.html#V2K%20HDL%20Ref

and look for yourself. He has several other books including one 
specifically on "gotchas" in Verilog and System Verilog that I have not 
read. My start in Verilog was taking Sutherland's class in the late '90s 
and his class text was clear and well written.

Palnitkar's book has details on usage of Verilog from basic to advanced 
stuff. One of the main things that I use if for is understanding syntax 
and behavior of "advanced" language elements from outside sources.

Article: 160411
Subject: Re: HDL simple survey - what do you actually use
From: Kevin Neilson <kevin.neilson@xilinx.com>
Date: Tue, 16 Jan 2018 17:33:10 -0800 (PST)
Links: << >>  << T >>  << A >>

> use Verilog on my own I would want to be sure I wasn't embedding any time=
=20
> bombs that would rear its ugly head after the design had been handed off =
to=20
> a customer.  Of course, that's always possible from logic errors, but I'm=
=20
> talking about misuse of the language.  I'd like a reference book that=20
> clearly identifies these potential problems.

Do you mean a misuse that would cause a mismatch between simulation and syn=
thesis?  The main type of issue I can think of that would "rear its head" l=
ater would be a clock-domain-crossing problem, but that wouldn't a result o=
f misusing the language.  If you forget to declare a multibit wire, it will=
 be assumed that it's a single bit, and then you can have weird behavior be=
cause you thought it was a bus, but that's probably something you're going =
to quickly find in sim.=20

I do not think the Palnitkar book is good and I have never found any Verilo=
g book that is very good.  I have a decent one somewhere that is for engine=
ers doing synthesis, though I can't remember the name, and it's more of a s=
upplemental reference.  You can find some papers on Cliff Cumming's Sunburs=
t Design page which go over some Verilog solecisms.

Article: 160412
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Tue, 16 Jan 2018 17:45:27 -0800 (PST)
Links: << >>  << T >>  << A >>
On Wednesday, January 10, 2018 at 5:56:45 PM UTC-8, Weng Tianxiang wrote:
> Hi,
>=20
> A wive-pipelined circuit has the same logic as its pipeline counterpart e=
xcept that the wive-pipelined circuit has only one stage, a critical path f=
rom the input register passing through a piece of computational logic to th=
e output register, and no intermediate registers.
>=20
> My invention kernel idea is: A designer provides the least information an=
d logic code about the critical path, and leave all complex logic designs t=
o a synthesizer and a system library that is what an HDL should do.
>=20
> All coding has 3 steps:
> 1. Write a Critical Path Component (CPC) with defined interface;
>=20
> 2. Call a Wave-Pipelining Component (WPC) provided by a system library;
>=20
> 3. Call one of 3 link statement to link a CPC instantiation with a paired=
 WPC instantiation to specify what your target is.
>=20
> Here is the all code on a 64*64 bits signed integer multiplier C <=3D A*B=
.
>=20
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.numeric_std.all;
> use work.wave_pipeline_package.all;
>=20
> -- CPC code for wave-pipelined 64-bit signed integer multiplier C <=3D A*=
B
> -- CPC_1_2 is linked with SMB by link1() / link2() if "wave" is accepted =
in VHDL
> -- link1(): generation would fail if the circuit cannot accept 1 data per=
 cycle
> -- link2(): generation never fails and the circuit is capable of acceptin=
g 1 data per=20
> -- INPUT_CLOCK_NUMBER cycles
>=20
> entity CPC_1_2 is=20
>    generic (  =20
>       input_data_width  : positive  :=3D 64;                  -- optional
>       output_data_width : positive  :=3D 128                  -- optional
>    );
>    port (
>       CLK   :  in std_logic;
>       WE_i  :  in std_logic;     -- '1': write enable to input registers =
A & B=20
>       Da_i  :  in signed(input_data_width-1 downto 0);      -- input data=
 A
>       Db_i  :  in signed(input_data_width-1 downto 0);      -- input data=
 B
>       WE_o_i:  in std_logic;  -- '1': write enable to output register C
>       Dc_o  :  out unsigned(output_data_width -1 downto 0)  -- output dat=
a C
>    );
> end CPC_1_2;
>=20
> architecture A_CPC_1_2 of CPC_1_2 is
>    signal   Ra :  signed(input_data_width-1 downto 0);  -- input register=
 A
>    signal   Rb :  signed(input_data_width-1 downto 0);  -- input register=
 B
>    signal   Rc :  signed(output_data_width-1 downto 0); -- output registe=
r C
>    signal   Cl :  signed(output_data_width-1 downto 0); -- combinational =
logic
>   =20
> begin
>    Cl    <=3D Ra * Rb;             -- combinational logic output, key par=
t of CPC
>    Dc_o  <=3D unsigned(Rc);        -- output through output register
>=20
>    p_1 : process(CLK)
>    begin
>       if Rising_edge(CLK) then
>          if WE_i =3D '1' then      -- WE_i =3D '1' : latch input data
>             Ra <=3D Da_i;
>             Rb <=3D Db_i;
>          end if;
>         =20
>          if WE_O_I =3D '1' then    -- WE_O_I =3D '1': latch output data
>             Rc <=3D Cl;
>          end if;
>       end if;
>    end process;
>=20
> -------------------------------------------------------------------------=
-------
>=20
> end A_CPC_1_2;
>=20
> In summary, after HDL adopting my system, writing a wave-pipelined circui=
t is simple as writing a one-cycle logic circuit.
>=20
> Thank you.
>=20
> Weng

Hi,

Here is more information on WPC (Wave-Pipelining Component) provided by a s=
ystem library (I wroted).=20

1. There are only 2 WPCs to cover all wave-piplined circuits:
  a) It is used for the situation under which only one critical path is use=
d.
  b) It is used for the situation under which more than one same critical p=
ath is used.

2. There are 5 types of structures of all wave-pipelined circuits based on =
my classification:
  a) A one cycle non-pipelining circuit when it is coded as a wave-pipeline=
d circuit, but finally it turns out to be a 1-cycle regular circuit.

  b) A wave-pipelined circuit that can accept one input data per cycle with=
 one critical path.

  c) A wave-pipelined circuit that can accept one input data per multiple c=
ycles with one critical path.

  d) A wave-pipelined circuit that can accept one input data per cycle with=
 more than one critical path, each critical path having an input register a=
nd an output register.

  e) A wave-pipelined circuit that can accept one input data per cycle with=
 more than one critical path, each critical path having an input register a=
nd sharing a sole output register.

3. The method guarantees 100% success rate for generating a specific wave-p=
ipelined circuit.

Thank you.

Weng


Article: 160413
Subject: Re: Now - not so new cheaper FPGAs
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Tue, 16 Jan 2018 21:10:04 -0500
Links: << >>  << T >>  << A >>
Theo Markettos wrote on 1/16/2018 4:55 AM:
> rickman <gnuarm.deletethisbit@gmail.com> wrote:
>> I have used the Lattice XP3 FPGAs in a design I've made a lot of money from.
>>   The parts have gone EOL but Arrow bought some 70,000+ and is still trying
>> to get rid of them.  Seems they over estimated the market.  I had to pay a
>> higher price to them in 2016 than I paid when they were in production (~$10)
>> but now they are going for around $5-$6 depending on quantity and they still
>> have 65,000.  lol
>>
>> I wonder how cheap they would sell the lot?
>
> A while back Farnell had some ECP2 on clearance for about GBP1 each in 1-off.
> I bought a few dozen, not for their FPGA capability but because I wanted to
> try BGA soldering and they were the cheapest large (256 pin) BGA I could
> find.
>
> I don't remember how many they had in stock at the time, but probably about
> 1K.  I didn't have a use for 1K at the time.
>
>> With that many left in inventory, this might be a good chip to design a low
>> priced hobby board from, like the TinyFPGA, but cheaper, although there are
>> boards on eBay using the Altera EP2C5 with half again as many LUTs plus 13
>> multipliers.  The board is only $15 or $18 with a programming cable.
>
> I'm confused by their branding - is it the same as the MachXO3 or ECP3?
> If they have SERDES that could get very interesting.

I'm not sure what "it" means.  If you are talking about the XP Lattice 
device, then no, the XP family is very old and basic with just block RAM and 
no multipliers.  The XP2 has multiplier I believe, but no SERDES.  The XO2 
is marketed as more of a high end CPLD functionality, again not SERDES, but 
I don't recall if they have multiplier.  I think the XO3 might have SERDES 
and I'm pretty sure they have multipliers.  It's hard to keep them all 
straight when there is so much overlap and the names don't really tell so 
much about the parts, except the XPx and XOx lines are all flash while the 
ECPx lines are all RAM based like the Xilinx parts.


> I'm sceptical whether cutting $5 from the price of a comparable low-end
> board is going to stimulate much further demand.  Are there lots of people
> who have the skills to get into FPGA design but are held up by lacking $5?
> To me the barriers seem to be tools and languages, not the price of the
> hardware.

The point is people reach for a $5 MCU board and learn the skills to program 
it vs. reaching for a $20+ FPGA board to learn the skills.  There is a 
particular MCU on eBay that is sold on a board for $3 I think.  FPGA can't 
touch that!


> If there was some killer app - like Kodi is for RPi - that could be
> packaged up and would sell lots of boards to people who don't have to use
> FPGA tools, things would be different.

Kodi?  Never heard of it.  I guess I was killed.  I don't understand what 
you mean about not having to use FPGA tools.  What exactly are you proposing?

-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998

Article: 160414
Subject: Re: HDL simple survey - what do you actually use
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Tue, 16 Jan 2018 21:20:50 -0500
Links: << >>  << T >>  << A >>
Kevin Neilson wrote on 1/16/2018 8:33 PM:
>
>> use Verilog on my own I would want to be sure I wasn't embedding any time
>> bombs that would rear its ugly head after the design had been handed off to
>> a customer.  Of course, that's always possible from logic errors, but I'm
>> talking about misuse of the language.  I'd like a reference book that
>> clearly identifies these potential problems.
>
> Do you mean a misuse that would cause a mismatch between simulation and synthesis?  The main type of issue I can think of that would "rear its head" later would be a clock-domain-crossing problem, but that wouldn't a result of misusing the language.  If you forget to declare a multibit wire, it will be assumed that it's a single bit, and then you can have weird behavior because you thought it was a bus, but that's probably something you're going to quickly find in sim.

In VHDL everything is explicitly stated, no assumptions.  In Verilog my 
understanding is there are things that are assumed that you need to know 
about or the tools will do something other than what you expect.  It is not 
possible to test everything, so some of these may be missed unless you are 
wary of them.  I don't recall anything about them, but I think some have to 
do with arithmetic.  In VHDL you specify the bus widths of operands, results 
and even intermediates.  I believe Verilog is consistent, but what it does 
may not be obvious.


> I do not think the Palnitkar book is good and I have never found any Verilog book that is very good.

I get this a lot.


> I have a decent one somewhere that is for engineers doing synthesis, though I can't remember the name, and it's more of a supplemental reference.  You can find some papers on Cliff Cumming's Sunburst Design page which go over some Verilog solecisms.
>


-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998

Article: 160415
Subject: Re: HDL simple survey - what do you actually use
From: o pere o <me@somewhere.net>
Date: Wed, 17 Jan 2018 08:37:34 +0100
Links: << >>  << T >>  << A >>
On 13/01/18 12:29, Thomas Heller wrote:
> Am 10.01.2018 um 15:17 schrieb john:
>>
>> I'm trying to decide on which to use for a project as the main default  that may
>> include a number of freelance people.
>>
>> can you say which of these you actually use (the most)
>> and have the best skills in
>>
>> Verilog
>> systemVerilog
>> SystemC
>> VHDL
>> Other
>>
> 
> Is use MyHDL which gets translated into VHDL for synthesis.
> 
> Thomas
> 

I had a look at MyHDL a while ago and it looked promising. Can you share 
some experiences, pointers, etc? I'd like to know from someone who 
actually is using it!

Pere

Article: 160416
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Jan Coombs <jenfhaomndgfwutc@murmic.plus.com>
Date: Wed, 17 Jan 2018 07:40:52 +0000
Links: << >>  << T >>  << A >>
On Sat, 13 Jan 2018 13:31:14 -0800 (PST)
"Rick C. Hodgin" <rick.c.hodgin@gmail.com> wrote:

> Do you have a YouTube example?  And an example that wil 
> synthesize in Icarus?  So we can see your method compares to a
> standard example.

There is perhaps some explanation in "Wave-Pipelining: A
Tutorial and Research Survey"[1], and "DESIGN AND TIMING
ANALYSIS OF WAVE PIPELINED CIRCUITS"[2].

Jan Coombs
-- 

[1] IEEE  Transactions on VLSI Systems 
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.1783&rep=rep1&type=pdf

[2] Recep Ozgun's MSc thesis
https://soar.wichita.edu/bitstream/handle/10057/383/t06064.pdf?sequence=3



Article: 160417
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Wed, 17 Jan 2018 11:45:30 -0800 (PST)
Links: << >>  << T >>  << A >>
On Tuesday, January 16, 2018 at 11:40:55 PM UTC-8, Jan Coombs wrote:
> On Sat, 13 Jan 2018 13:31:14 -0800 (PST)
> "Rick C. Hodgin" <rick.c.hodgin@gmail.com> wrote:
>=20
> > Do you have a YouTube example?  And an example that wil=20
> > synthesize in Icarus?  So we can see your method compares to a
> > standard example.
>=20
> There is perhaps some explanation in "Wave-Pipelining: A
> Tutorial and Research Survey"[1], and "DESIGN AND TIMING
> ANALYSIS OF WAVE PIPELINED CIRCUITS"[2].
>=20
> Jan Coombs
> --=20
>=20
> [1] IEEE  Transactions on VLSI Systems=20
> http://citeseerx.ist.psu.edu/viewdoc/download?doi=3D10.1.1.90.1783&rep=3D=
rep1&type=3Dpdf
>=20
> [2] Recep Ozgun's MSc thesis
> https://soar.wichita.edu/bitstream/handle/10057/383/t06064.pdf?sequence=
=3D3

Hi Jan,

I appreciate your efforts to dig deep into my inventions.I would like to pa=
tiently answer all reasonable technical questions.=20

Your reference [1] is none but what activates my inspiration to resolve the=
 open problem: design both a coding and a synthesizing methods so that any =
logic design engineers, including college students with basic knowledge in =
HDL, can code and generate a wave-piplined circuit.

All published materials I have read are centered on how to eliminate data c=
ontamination, a special feature which is never heard in any non-wave-pipeli=
ned circuit design.

A data contamination is defined as a later entered data catches up an earli=
er entered data, damaging the earlier entered data.

What my inventions do is to build a bridge between code designers and synth=
esizers in order to code and generate a wave-pipelined circuit in the easie=
st way:

If a code designer provides all necessary and sufficient information to a s=
ynthesizer, the synthesizer should and can generate a wave-pipelined circui=
t as it is specified.=20

Your reference [1] (1998) at page 142 below table 1 indicates that "Last, d=
ue to a lack of commercial tools that are directly applicable to designs us=
ing wave-pipelining, each group has more or less developed in-house design =
analysis and optimization tools which enable VLSI design using wave-pipelin=
ing."

So I have assumed at the beginning of my project that if a new part on wave=
-pipelined circuit in HDL standard is well designed and laid out,any synthe=
sizer manufacturers have the ability to generate a wave-pipelined circuit. =
The assumption was also based on your reference [1] (1998) at table 1 at pa=
ge 142 where it indicates there are 30 wave-pipelined circuits (20 years ag=
o), none of their authors have any relationships with a professional synthe=
sizer manufacturer.

Furthermore during the development period I found that no matter how many t=
ypes of wave-pipelined circuits are in the past or in the future, each of a=
ll wave-pipelined circuits comprises two part, one is the critical path, pr=
esented by CPC (Critical Path Component), all remaining logic is always the=
 same for a group of wave-pipelined circuits WPC (Wave-Pipelining Component=
), depending on what target a designer wants for his circuit.

In my design no timings related to a wave-pipelined circuit appear, never, =
because they are within the scope of a synthesizer operation and have nothi=
ng to do with their coding.

There is no a commercial synthesizer in the world which can directly genera=
te a wave-pipelined circuit. To prove my WPCs are correct, I coded a CPC wh=
ich does nothing but passes the data in the critical path obeying a critica=
l path behavior: if the critical path needs 5 cycle for signals to travel, =
its output would be available in 6 cycles and if the critical path is block=
ed, a later entered data would have a chance to damage an earlier entered d=
ata if design is not right. So essentially I have no very sophisticated too=
ls used, nor timing analysis.

Thank you.

Weng

Article: 160418
Subject: Re: HDL simple survey - what do you actually use
From: john p <john.providenza@gmail.com>
Date: Wed, 17 Jan 2018 16:37:07 -0800 (PST)
Links: << >>  << T >>  << A >>
On Tuesday, January 16, 2018 at 6:21:06 PM UTC-8, rickman wrote:
> Kevin Neilson wrote on 1/16/2018 8:33 PM:
> >
> >> use Verilog on my own I would want to be sure I wasn't embedding any t=
ime
> >> bombs that would rear its ugly head after the design had been handed o=
ff to
> >> a customer.  Of course, that's always possible from logic errors, but =
I'm
> >> talking about misuse of the language.  I'd like a reference book that
> >> clearly identifies these potential problems.
> >
> > Do you mean a misuse that would cause a mismatch between simulation and=
 synthesis?  The main type of issue I can think of that would "rear its hea=
d" later would be a clock-domain-crossing problem, but that wouldn't a resu=
lt of misusing the language.  If you forget to declare a multibit wire, it =
will be assumed that it's a single bit, and then you can have weird behavio=
r because you thought it was a bus, but that's probably something you're go=
ing to quickly find in sim.
>=20
> In VHDL everything is explicitly stated, no assumptions.  In Verilog my=
=20
> understanding is there are things that are assumed that you need to know=
=20
> about or the tools will do something other than what you expect.  It is n=
ot=20
> possible to test everything, so some of these may be missed unless you ar=
e=20
> wary of them.  I don't recall anything about them, but I think some have =
to=20
> do with arithmetic.  In VHDL you specify the bus widths of operands, resu=
lts=20
> and even intermediates.  I believe Verilog is consistent, but what it doe=
s=20
> may not be obvious.
>=20
>=20
> > I do not think the Palnitkar book is good and I have never found any Ve=
rilog book that is very good.
>=20
> I get this a lot.
>=20
>=20
> > I have a decent one somewhere that is for engineers doing synthesis, th=
ough I can't remember the name, and it's more of a supplemental reference. =
 You can find some papers on Cliff Cumming's Sunburst Design page which go =
over some Verilog solecisms.
> >
>=20
>=20
> --=20
>=20
> Rick C
>=20
> Viewed the eclipse at Wintercrest Farms,
> on the centerline of totality since 1998

I have not yet found a Verilog book that I thought was worth buying :(

I'd look for papers by Sutherland and Cliff Cummings, especially, I think, =
Cliff's book on Verilog gotchas.

The key rule I use for Verilog is when coding combinatorial blocks, use
blocking assignments:
  always @(*)
    foo =3D bar;
When coding synchronous logic, use non-blocking assignments:
  always @(posedge clk)
    foo <=3D bar;

Rules are made to be broken, but I *rarely* break these two rules.

John P

Article: 160419
Subject: Re: HDL simple survey - what do you actually use
From: Thomas Heller <theller@ctypes.org>
Date: Thu, 18 Jan 2018 09:31:09 +0100
Links: << >>  << T >>  << A >>
Am 17.01.2018 um 08:37 schrieb o pere o:
> On 13/01/18 12:29, Thomas Heller wrote:
>> Am 10.01.2018 um 15:17 schrieb john:
>>>
>>> can you say which of these you actually use (the most)
>>> and have the best skills in
>>>
>>> Verilog
>>> systemVerilog
>>> SystemC
>>> VHDL
>>> Other
>>>
>>
>> Is use MyHDL which gets translated into VHDL for synthesis.
>>
> 
> I had a look at MyHDL a while ago and it looked promising. Can you share 
> some experiences, pointers, etc? I'd like to know from someone who 
> actually is using it!

I'm not good at writing reviews, but I'm very happy with MyHDL.  It
removes the pain that I mostly feel when writing VHDL.
And using MyHDL is the first time that I write real testbenches
and simulate.

Something that I can recommend to read about MyHDL are articles by Jan 
Decaluwe, the main author, at http://jandecaluwe.com/hdldesign/ .
Especially this one: http://jandecaluwe.com/hdldesign/counting.html .
Then Christopher Felton also has a couple of nice articles at
fpgarelated:
https://www.fpgarelated.com/blogs-1/nf/Christopher_Felton.php

Thomas


Article: 160420
Subject: Re: HDL simple survey - what do you actually use
From: Mark Humphries <mwh@intranetsys.com>
Date: Thu, 18 Jan 2018 07:34:45 -0800 (PST)
Links: << >>  << T >>  << A >>
On Wednesday, January 10, 2018 at 10:17:32 PM UTC+8, john wrote:
> I'm trying to decide on which to use for a project as the main default  that may 
> include a number of freelance people.
> 
> can you say which of these you actually use (the most)
> and have the best skills in
> 
> Verilog 
> systemVerilog
> SystemC
> VHDL
> Other
> 
> And if possible what type of work you use it for in general
> I dont need to know why you use a particular one - and to avoid 
> flame wars request you dont explain that.
> 
> I'm just trying to get a general feel for what people here use regularly.
> 
> TIA
> 
> -- 
> 
> john
> 
> =========================
> http://johntech.co.uk
> =========================

I've recently switched from Verilog 2001 to SystemVerilog, fewer gotchas to work around.

For a reference I recommend:
RTL Modeling with SystemVerilog for Simulation and Synthesis: Using SystemVerilog for ASIC and FPGA Design by Stuart Sutherland.

Article: 160421
Subject: Re: HDL simple survey - what do you actually use
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Thu, 18 Jan 2018 10:53:36 -0500
Links: << >>  << T >>  << A >>
Mark Humphries wrote on 1/18/2018 10:34 AM:
> On Wednesday, January 10, 2018 at 10:17:32 PM UTC+8, john wrote:
>> I'm trying to decide on which to use for a project as the main default  that may
>> include a number of freelance people.
>>
>> can you say which of these you actually use (the most)
>> and have the best skills in
>>
>> Verilog
>> systemVerilog
>> SystemC
>> VHDL
>> Other
>>
>> And if possible what type of work you use it for in general
>> I dont need to know why you use a particular one - and to avoid
>> flame wars request you dont explain that.
>>
>> I'm just trying to get a general feel for what people here use regularly.
>>
>> TIA
>>
>> --
>>
>> john
>>
>> =========================
>> http://johntech.co.uk
>> =========================
>
> I've recently switched from Verilog 2001 to SystemVerilog, fewer gotchas to work around.
>
> For a reference I recommend:
> RTL Modeling with SystemVerilog for Simulation and Synthesis: Using SystemVerilog for ASIC and FPGA Design by Stuart Sutherland.

Seems to be a $120 book.  That's a bit steep even for HDL books.

-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998

Article: 160422
Subject: Re: HDL simple survey - what do you actually use
From: Theo Markettos <theom+news@chiark.greenend.org.uk>
Date: 18 Jan 2018 16:46:35 +0000 (GMT)
Links: << >>  << T >>  << A >>
john <anon@example.com> wrote:
> 
> I'm trying to decide on which to use for a project as the main default
> that may include a number of freelance people.
> 
> can you say which of these you actually use (the most)
> and have the best skills in

Bluespec SystemVerilog (BSV), which is actually nothing to do with
SystemVerilog but is a high-level HDL derived from Haskell (including types,
polymorphism, functional language features).

Since BSV is a bit niche, I teach SystemVerilog to undergrads and will use
it for glue when necessary.

Talking to major IP vendors who provide both Verilog and VHDL versions of
IP, the Verilog versions are a lot more popular.

Theo

Article: 160423
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Fri, 19 Jan 2018 08:45:19 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi,

I have told that my invention kernel idea is: A designer provides the least=
 information and logic code about the critical path, and leaves all complex=
 logic designs to a synthesizer and a system library that is what an HDL sh=
ould do.=20

Here are the technique key points that I have used used to fully develop my=
 technique, assuming that you are an experienced code designer in HDL.

Even though the technique is tricky, but it is easy to understand if you fu=
lly understand the concepts in this and next posts, each in 20 or more minu=
tes for 80% engineers here

Here I am using 64*64 bits signed multiplexer as the target circuit example=
.

1. If my CPC_1_2 code is presented to a synthesizer, the first question you=
 may ask is how do you code your WPC (Wive-Pipelining Component). For clari=
ty, I copied the CPC_1_2 code here again.

By the way, I claim that nobody can further simplify the CPC_1_2 code to de=
liver full information about a critical path to a synthesizer for generatin=
g a wave-pipelined circuit! If you can, please challenge my claim.=20

entity CPC_1_2 is=20
   generic (  =20
      input_data_width  : positive  :=3D 64;                  -- optional=
=20
      output_data_width : positive  :=3D 128                  -- optional=
=20
   );=20
   port (=20
      CLK   :  in std_logic;=20
      WE_i  :  in std_logic;     -- '1': write enable to input registers A =
& B=20
      Da_i  :  in signed(input_data_width-1 downto 0);      -- input data A=
=20
      Db_i  :  in signed(input_data_width-1 downto 0);      -- input data B=
=20
      WE_o_i:  in std_logic;  -- '1': write enable to output register C=20
      Dc_o  :  out unsigned(output_data_width -1 downto 0)  -- output data =
C=20
   );=20
end CPC_1_2;=20

architecture A_CPC_1_2 of CPC_1_2 is=20
   signal   Ra :  signed(input_data_width-1 downto 0);  -- input register A=
=20
   signal   Rb :  signed(input_data_width-1 downto 0);  -- input register B=
=20
   signal   Rc :  signed(output_data_width-1 downto 0); -- output register =
C=20
   signal   Cl :  signed(output_data_width-1 downto 0); -- combinational lo=
gic=20
   =20
begin=20
   Cl    <=3D Ra * Rb;             -- combinational logic output, key part =
of CPC=20
   Dc_o  <=3D unsigned(Rc);        -- output through output register=20

   p_1 : process(CLK)=20
   begin=20
      if Rising_edge(CLK) then=20
         if WE_i =3D '1' then      -- WE_i =3D '1' : latch input data=20
            Ra <=3D Da_i;=20
            Rb <=3D Db_i;=20
         end if;=20
         =20
         if WE_O_I =3D '1' then    -- WE_O_I =3D '1': latch output data=20
            Rc <=3D Cl;=20
         end if;=20
      end if;=20
   end process;=20
end A_CPC_1_2;=20

2. Assume 3 situations:
a) If you know that each data needs 5 cycles to pass the 64*64 bits signed =
multiplexer and the circuit can accept one data per cycle, you should know =
how to code the WPC for the circuit. Because we have already assumed that t=
he synthesizer is capable of generating the wave-pipelined circuit for it, =
leaving most difficult task to the synthesizer. By definition a WPC contain=
s all remaining logic for the circuit except the CPC_1_2.=20

b) If you know that each data needs 5 cycles to pass the 64*64 bits signed =
multiplexer and the circuit can accept one data per 2 cycles, you should kn=
ow how to code the WPC for the circuit.

c) If you know that each data needs 5 cycles to pass the 64*64 bits signed =
multiplexer and the circuit can accept one data per 2 cycles, but the desig=
ner wants the circuit to be able of accepting one data per cycle, not one d=
ata per 2 cycles, you should know how to code the WPC for the circuit with =
2 copies of critical paths and each alternatively accepting an input data p=
er 2 cycles. Actually all CPCs have 2 types of code patterns, CPC_1_2 is on=
e of them and another CPC_3 is slightly complex, but is an off shelf coding=
 pattern either.In this situation CPC_3 code would replace CPC_1_2 with sam=
e input and output interfaces.

Now the problem comes: how do you know all 3 unknown parameters before you =
code the WPC for the 64*64 bits signed multiplexer? I think that this is th=
e key reason why so many wave-pipelined circuits have been generated, but n=
one of the circuits designers can resolve the 50 years old open problem.

And the circuit may, should and can be any type of pipelined circuits!

To be continued.

I would like to listen to your questions and comments!

Weng


=20

Article: 160424
Subject: Re: My invention: Coding wave-pipelined circuits with buffering
From: rickman <gnuarm.deletethisbit@gmail.com>
Date: Fri, 19 Jan 2018 17:42:57 -0500
Links: << >>  << T >>  << A >>
Weng Tianxiang wrote on 1/10/2018 8:56 PM:
> Hi,
>
> A wive-pipelined circuit has the same logic as its pipeline counterpart except that the wive-pipelined circuit has only one stage, a critical path from the input register passing through a piece of computational logic to the output register, and no intermediate registers.
>
> My invention kernel idea is: A designer provides the least information and logic code about the critical path, and leave all complex logic designs to a synthesizer and a system library that is what an HDL should do.
>
> All coding has 3 steps:
> 1. Write a Critical Path Component (CPC) with defined interface;
>
> 2. Call a Wave-Pipelining Component (WPC) provided by a system library;
>
> 3. Call one of 3 link statement to link a CPC instantiation with a paired WPC instantiation to specify what your target is.
>
> Here is the all code on a 64*64 bits signed integer multiplier C <= A*B.
>
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.numeric_std.all;
> use work.wave_pipeline_package.all;
>
> -- CPC code for wave-pipelined 64-bit signed integer multiplier C <= A*B
> -- CPC_1_2 is linked with SMB by link1() / link2() if "wave" is accepted in VHDL
> -- link1(): generation would fail if the circuit cannot accept 1 data per cycle
> -- link2(): generation never fails and the circuit is capable of accepting 1 data per
> -- INPUT_CLOCK_NUMBER cycles
>
> entity CPC_1_2 is
>    generic (
>       input_data_width  : positive  := 64;                  -- optional
>       output_data_width : positive  := 128                  -- optional
>    );
>    port (
>       CLK   :  in std_logic;
>       WE_i  :  in std_logic;     -- '1': write enable to input registers A & B
>       Da_i  :  in signed(input_data_width-1 downto 0);      -- input data A
>       Db_i  :  in signed(input_data_width-1 downto 0);      -- input data B
>       WE_o_i:  in std_logic;  -- '1': write enable to output register C
>       Dc_o  :  out unsigned(output_data_width -1 downto 0)  -- output data C
>    );
> end CPC_1_2;
>
> architecture A_CPC_1_2 of CPC_1_2 is
>    signal   Ra :  signed(input_data_width-1 downto 0);  -- input register A
>    signal   Rb :  signed(input_data_width-1 downto 0);  -- input register B
>    signal   Rc :  signed(output_data_width-1 downto 0); -- output register C
>    signal   Cl :  signed(output_data_width-1 downto 0); -- combinational logic
>
> begin
>    Cl    <= Ra * Rb;             -- combinational logic output, key part of CPC
>    Dc_o  <= unsigned(Rc);        -- output through output register
>
>    p_1 : process(CLK)
>    begin
>       if Rising_edge(CLK) then
>          if WE_i = '1' then      -- WE_i = '1' : latch input data
>             Ra <= Da_i;
>             Rb <= Db_i;
>          end if;
>
>          if WE_O_I = '1' then    -- WE_O_I = '1': latch output data
>             Rc <= Cl;
>          end if;
>       end if;
>    end process;
>
> --------------------------------------------------------------------------------
>
> end A_CPC_1_2;
>
> In summary, after HDL adopting my system, writing a wave-pipelined circuit is simple as writing a one-cycle logic circuit.
>
> Thank you.
>
> Weng

What is SMB?

I think I understand the concept of wave pipelining.  It is just eliminating 
the intermediate registers of a pipeline circuit and designing the 
combinational logic so that the delays are even enough across the many paths 
so the output can be clocked at a given time and will receive a stable 
result from the input N clocks earlier.  In other words, the logic is 
designed so that the changes rippling through the logic never catch up to 
the changes created by the data entered 1 clock cycle earlier.  Nice if you 
can do it.

I can see where this would be useful in an ASIC.  In ASICs FFs and logic 
compete for space within the chip.  In FPGAs the ratio between FFs and logic 
are fixed and predetermined.  So using logic without using the FFs that are 
already there is not of much value.

-- 

Rick C

Viewed the eclipse at Wintercrest Farms,
on the centerline of totality since 1998



Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMar2019

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search