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
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

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 99500

Article: 99500
Subject: Re: Installing ISE 8.1i - don't use a space in the install path
From: "Marc Guardiani" <news.guardiani@gmail.com>
Date: 25 Mar 2006 08:59:22 -0800
Links: << >>  << T >>  << A >>
I don't know if 8.x still does it, but in previous versions when trying
to load projects with spaces in the path name, it would actually give
you an error mesage telling you that it did not support spaces. IIRC,
Windows has had long path name support for about 11 years.


Article: 99501
Subject: Re: Ace file for design with dual ppc405
From: "Joseph" <joeylrios@gmail.com>
Date: 25 Mar 2006 09:29:19 -0800
Links: << >>  << T >>  << A >>
Does each ppc have an elf file?  If so that would probably be a
problem, I don't think you can generate an ace file with more than one
elf (anyone who knows differently will hopefully correct me). I think
the previous advice was assuming that at least one of your ppcs has
it's entire program living on chip.  If that were the case then there
shouldn't be a problem, you'd only have one elf that needed to be part
of the ace.  Does the address space of BOTH the ppcs contain stuff off
the FPGA?


Article: 99502
Subject: Re: OpenSPARC released
From: chrisbw@gmail.com
Date: 25 Mar 2006 09:32:00 -0800
Links: << >>  << T >>  << A >>
The source comes with scripts for Design Compiler. I guess they want
you to use that tool; which is for targetting ASICs.


Article: 99503
Subject: Re: OpenSPARC released
From: chrisbw@gmail.com
Date: 25 Mar 2006 09:42:39 -0800
Links: << >>  << T >>  << A >>
Oh, and I don't have a gate count but the design is quite large:

[gliss@precision design]$ find ~/opensparc/design -name "*.v" -exec cat
{} \; | wc -l
 323957

There are over 320,000 lines of Verilog and the support scripts are
built for a DC ASIC synthesis environment... good luck getting that to
fit in an FPGA.


Article: 99504
Subject: Re: OpenSPARC released
From: Austin Lesea <austin@xilinx.com>
Date: Sat, 25 Mar 2006 10:18:21 -0800
Links: << >>  << T >>  << A >>
Chris,

Brings up a question for the group:  how many lines of verilog can you 
fit in any given FPGA?

Anyone out there in the ASIC emulation world care to comment?

Being a 'hardware' type, I am just ignorant...

Austin

chrisbw@gmail.com wrote:

> Oh, and I don't have a gate count but the design is quite large:
> 
> [gliss@precision design]$ find ~/opensparc/design -name "*.v" -exec cat
> {} \; | wc -l
>  323957
> 
> There are over 320,000 lines of Verilog and the support scripts are
> built for a DC ASIC synthesis environment... good luck getting that to
> fit in an FPGA.
> 

Article: 99505
Subject: Re: OpenSPARC released
From: Jan Decaluwe <jan@jandecaluwe.com>
Date: Sat, 25 Mar 2006 20:53:52 +0100
Links: << >>  << T >>  << A >>
Austin Lesea wrote:
> Chris,
> 
> Brings up a question for the group:  how many lines of verilog can you 
> fit in any given FPGA?

It's a meaningless question without considering the exact nature of
the Verilog code.

For example, a complex control FSM described in several pages of
code may require less than 100 gates. On the other hand, a simple
(but wide) flip-flop intensive data path, described in a few lines,
may require 10000 gates or more.

As for the SPARC code, it seems like an extreme example. I wouldn't
call this RTL code. It's more like a manually generated technology-
independent netlist. For example, they don't even use flip-flop
inference. And they do have excessive hierarchy.

I suspect that it should be possible to gain at least an order
of magnitude in terms of lines of code by using a proper RTL
style. And the synthesis results might be better. (Excessive
hierarchy tends to yield suboptimal synthesis results).

Regards,

Jan

-- 
Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com
Losbergenlaan 16, B-3010 Leuven, Belgium
     From Python to silicon:
     http://myhdl.jandecaluwe.com

Article: 99506
Subject: Re: OpenSPARC released
From: Austin Lesea <austin@xilinx.com>
Date: Sat, 25 Mar 2006 12:03:56 -0800
Links: << >>  << T >>  << A >>
Jan,

OK, that makes sense.  I had thought the "law of large numbers" would 
take over with enough code, but if this code is handcrafted for ASIC 
cell applications (with extremely primitive cells), then it would 
synthesize very poorly for anything but that application.

Austin

Jan Decaluwe wrote:

> Austin Lesea wrote:
> 
>> Chris,
>>
>> Brings up a question for the group:  how many lines of verilog can you 
>> fit in any given FPGA?
> 
> 
> It's a meaningless question without considering the exact nature of
> the Verilog code.
> 
> For example, a complex control FSM described in several pages of
> code may require less than 100 gates. On the other hand, a simple
> (but wide) flip-flop intensive data path, described in a few lines,
> may require 10000 gates or more.
> 
> As for the SPARC code, it seems like an extreme example. I wouldn't
> call this RTL code. It's more like a manually generated technology-
> independent netlist. For example, they don't even use flip-flop
> inference. And they do have excessive hierarchy.
> 
> I suspect that it should be possible to gain at least an order
> of magnitude in terms of lines of code by using a proper RTL
> style. And the synthesis results might be better. (Excessive
> hierarchy tends to yield suboptimal synthesis results).
> 
> Regards,
> 
> Jan
> 

Article: 99507
Subject: Nios II - VHDL Source Code, Licensing
From: "Udo" <WeikEngOff@aol.com>
Date: 25 Mar 2006 14:01:45 -0800
Links: << >>  << T >>  << A >>
Hello,

does somebody know whether it is possible
to get the Nios II-VHDL source code.
There is an ASIC license avialable. What
does that license cost?

Thanks.
Udo


Article: 99508
Subject: Nios II - Branch Prediction
From: "Udo" <WeikEngOff@aol.com>
Date: 25 Mar 2006 14:03:10 -0800
Links: << >>  << T >>  << A >>
Hello,

does somebody know more details about the
Nios II-branch prediction? I know only that
two types are supported - static and dynamic.
Any more details?

Thanks.
Udo


Article: 99509
Subject: Re: Nios II - Branch Prediction
From: "Isaac Bosompem" <x86asm@gmail.com>
Date: 25 Mar 2006 14:34:52 -0800
Links: << >>  << T >>  << A >>
I am not sure how it is for Nios II, but in general.

For static branch prediction, the CPU makes a fixed prediction when it
encounters a conditional branch in the instruction stream. For example
if the CPU encounters a jump on zero flag set, a static branch
predictor will assume that the CPU will take the branch. It does not
use the history of the instruction to determine if it will branch or
not. This I believe has pretty good results.

A dynamic branch predictor works on the history of the instruction
stream to determine if a jump will take place. For example if the CPU
encounters the same aforementioned instruction, it will look into
internals to determine the history of the instruction and make a
prediction based on that. The function to keep track of this varies
widely. A good example to look at would be the original Intel Pentium's
BTB (Branch Target Buffer). Or looking at the way the P2 or P3 do it.
The methods these chips use are ingenious and have very good prediction
rates, but by the looks of it, they do require some complicated
hardware.

Obviously the dynamic predictor will have better prediction records
than the static, but the static is FAR easier to implement.

Here is a link:
http://www.x86.org/articles/branch/branchprediction.htm

I was reading this article sometime ago and was very impressed with the
method Intel used. Perhaps somebody could post a link to a better
method than this, than I will faint :).

-Isaac


Article: 99510
Subject: C-based FPGA programming/mixed languages
From: The Other Guy <tog@null.void>
Date: Sun, 26 Mar 2006 10:47:20 +1200
Links: << >>  << T >>  << A >>
Hi,

I apologize if I sound like I don't know what I'm talking about. I am 
primarily a C programmer, but I am involved in a hardware design project 
at the moment, and would like some advice.

The 'proof of concept' phase of the development is being done in VHDL, 
with a processor core implementing some of the features. As the features 
will be incomplete when the project is handed over to me (due to time 
constraints), I will need to make modifications to the hardware design.

My preference is to develop in C for now as the functionality required 
is easily implemented in C, while learning VHDL is going to take quite 
some time.

I've been investigating C-based languages, in particular SystemC, SpecC, 
and FpgaC. SystemC is based on C++ classes, and FpgaC is still rather 
incomplete. SpecC looks like a good option, but I can't find any details 
about how the output can be used to programme a FPGA. Knowing not all 
vendor software is compatible, is SpecC suitable for this purpose?

My second question surrounded the mixing of languages. Is it possible 
for me to use SpecC or another language, while still making use of the 
VHDL code that has already been written and tested?

Thanks,

The Other Guy

Article: 99511
Subject: Re: Nios II - Branch Prediction
From: "Subroto Datta" <sdatta@altera.com>
Date: Sat, 25 Mar 2006 23:14:31 GMT
Links: << >>  << T >>  << A >>
Hi Udo,

    Your chances of getting a reply from an expert are much better if you 
post Nios questions on www.niosforum.com .

- Subroto Datta
Altera Corp.



"Udo" <WeikEngOff@aol.com> wrote in message 
news:1143324190.583196.306100@g10g2000cwb.googlegroups.com...
> Hello,
>
> does somebody know more details about the
> Nios II-branch prediction? I know only that
> two types are supported - static and dynamic.
> Any more details?
>
> Thanks.
> Udo
> 



Article: 99512
Subject: Re: C-based FPGA programming/mixed languages
From: Mike Treseler <mike_treseler@comcast.net>
Date: Sat, 25 Mar 2006 17:04:36 -0800
Links: << >>  << T >>  << A >>
The Other Guy wrote:

> My preference is to develop in C for now as the functionality required 
> is easily implemented in C, while learning VHDL is going to take quite 
> some time.

C is fine for programs that run on the processor core,
if that is working. For hardware changes, your best
bet is to modify and simulate the VHDL code you already have,
or find someone who can.

> I've been investigating C-based languages, in particular SystemC, SpecC, 
> and FpgaC. SystemC is based on C++ classes, and FpgaC is still rather 
> incomplete. SpecC looks like a good option, but I can't find any details 
> about how the output can be used to programme a FPGA. Knowing not all 
> vendor software is compatible, is SpecC suitable for this purpose?

I would hesitate to rewrite a working processor core
in any case. Changing to a fledgling description
language would further reduce your odds of success.

> My second question surrounded the mixing of languages. Is it possible 
> for me to use SpecC or another language, while still making use of the 
> VHDL code that has already been written and tested?

Anything is possible, but I would either stick
with VHDL or start over. You will almost certainly
be making interacting changes in both the new and old
hardware descriptions -- and you will have to run simulations
on the whole thing.

           -- Mike Treseler

Article: 99513
Subject: Re: false paths in Actel flow
From: "Daniel Leu" <daniel.leu@gmail.com>
Date: 25 Mar 2006 17:10:31 -0800
Links: << >>  << T >>  << A >>
Hello Burns,

Synplify generates an SDC file (xxx_sdc.sdc) that can be imported into
Designer. So there is no need to create two different constraint files.

Initially, I would use the Synplify constraint editor to create the
false path definitions. This way, you have valid constraints to start
with.

Regards,
Daniel


Article: 99514
Subject: BlockROM inference in XST - This is just plain silly
From: "JustJohn" <john.l.smith@titan.com>
Date: 25 Mar 2006 17:31:59 -0800
Links: << >>  << T >>  << A >>
What a waste of my time! (A cautionary rant)

 As part of a re-engineering of a 15 year old product, I need a ROM
with pre-settable output in a Spartan 3. It is company policy to try to
write for vendor indepence, so the ROM has to be coded in VHDL, and I
cannot use Coregen (even though I know this product will never be
targeted to any other part, at least for another 10 years). The 8.1i
release of ISE has support for "synchronously controlled initialization
of the RAM data outputs"  (pg 218 of XST User Guide) and for RAM
initialization (pg 226). Thinking I can be clever about it, I code up a
RAM with initial values and also with output initialization:

type ram_type is array (0 to 255)
              of std_logic_vector(7 downto 0);
signal RAM : ram_type := (
  X"12", X"34", yadda, yadda, yadda,

constant Init_Value : std_logic_vector( 7 downto 0 )
                      := x"FE";
...
process( Clk ) begin
  if RISING_EDGE( Clk ) then
    if CE = '1' then
      if WE = '1' then
        RAM (TO_INTEGER(Addr)) <= DI;
      end if;
      if rst = '1' then -- optional reset
        D_Out <= Init_Value;
      else
        D_Out <= RAM(TO_INTEGER(addr)) ;
  end if; end if; end if;
end process;

and then just tie off we:

  WE <= '0';

What does XST do with this? It sees WE tied off, realizes this is a
ROM, not a RAM, and spits out the message:

INFO:Xst:1649 - Currently unable to implement this ROM as a read-only
block RAM. Please look for coming sofware updates.

Arrrrgh! This, in spite of the fact that there is no trouble at all if
WE is not tied off. I know it is not the case that someone is just
being perverse, but right now it sure feels like it. Tools, ya gotta
love 'em.


Article: 99515
Subject: Re: Verilog Task pass value problem?
From: "Davy" <zhushenli@gmail.com>
Date: 25 Mar 2006 17:46:39 -0800
Links: << >>  << T >>  << A >>
Hi Ajeetha,

If I pass clk to test_lib, shall I use `include "test_lib.v"?

Best regards,
Davy


Article: 99516
Subject: Re: Verilog Task pass value problem?
From: "Ajeetha" <ajeetha@gmail.com>
Date: 25 Mar 2006 18:35:25 -0800
Links: << >>  << T >>  << A >>
Davy,
    That wouldn't change from the way you currently compile it. Say:

  vcs test_lib.v test.v

Only the instantiation changes:

>>test_lib test_lib();
test_lib test_lib(.clk(clk)); 

HTH
Ajeetha CVC
www.noveldv.com


Article: 99517
Subject: Re: PacoBlaze with multiply and 16-bit add/sub instructions
From: "Brian Davis" <brimdavis@aol.com>
Date: 25 Mar 2006 18:50:26 -0800
Links: << >>  << T >>  << A >>
Pablo Bleyer Kocik wrote:
>
> Thanks for the pointers. I will try that.
>
 I couldn't turn up that other post that I recalled, but I dug
up a code snippet of the conditional signed skips of my own
homebrew processor. ( no mid-chain split, but overflow logic
coded with pad bits )

 Basically, the copy of the MSB input bits at bit position
MSB+1 lets you indirectly look for a difference in the carries
into and out of the MSB position in the inferred RTL adder.

gen_sgbt: if CFG_SKIP_GROUP_B = TRUE generate

  skip_b: block
     signal wide_diff : std_logic_vector( ALU_MSB+2 downto 0);
     signal pad_ar   : std_logic_vector( ALU_MSB+2 downto 0);
     signal pad_br   : std_logic_vector( ALU_MSB+2 downto 0);

     begin
       pad_ar <= ( '0' & ar(ALU_MSB) & ar );
       pad_br <= ( '0' & br(ALU_MSB) & br );

       wide_diff <= pad_ar - pad_br;

       -- sign, carry, overflow, zero bits
       cb_n <= wide_diff(ALU_MSB);
       cb_c <= wide_diff(ALU_MSB+2);
       cb_v <= wide_diff(ALU_MSB+1) XOR wide_diff(ALU_MSB);
       cb_z <= '1' when ( wide_diff(ALU_MSB downto 0) = ALU_ZERO ) else
'0';

     end block skip_b;

   --
   -- mux for skip_b condition decoding
   --
   skip_decode_b: process(skip_sense, skip_type, cb_z, cb_n, cb_c,
cb_v)
    variable skip_mux_b : std_logic;
    begin

      -- mux condition sources
      case skip_type is
        when CND_LO => skip_mux_b :=  cb_c;
        when CND_LS => skip_mux_b :=  cb_z OR  cb_c;
        when CND_LT => skip_mux_b :=  cb_n XOR cb_v;
        when CND_LE => skip_mux_b := (cb_n XOR cb_v) OR cb_z;
        when others => skip_mux_b := '1';
      end case;

      if skip_sense = '0' then
        skip_cond_b <= skip_mux_b;
      else
        skip_cond_b <= NOT skip_mux_b;
      end if;

    end process skip_decode_b;

end generate gen_sgbt;


Which implements:

SCCB   : skip conditions, group B

       000 0  skip.lo   lower                  unsigned, RA <  RB
       100 0  skip.hs   higher or same         unsigned, RA >= RB

       001 0  skip.ls   lower or same          unsigned, RA <= RB
       101 0  skip.hi   higher                 unsigned, RA >  RB

       010 0  skip.lt   less than              signed,   RA <  RB
       110 0  skip.ge   greater than or equal  signed,   RA >= RB

       011 0  skip.le   less than or equal     signed,   RA <= RB
       111 0  skip.gt   greater than           signed,   RA >  RB

 There's also a great explanation of generating conditionals and
overflows in sections 2-11 through 2-13 of "Hacker's Delight", Warren,
Addison Wesley, 2003

Brian


Article: 99518
Subject: Re: XST takes unusually long
From: "Brian Davis" <brimdavis@aol.com>
Date: 25 Mar 2006 19:20:44 -0800
Links: << >>  << T >>  << A >>
>The older code was getting synthesized in around 20 mins, but the new
> code takes hours together to get synthesized, and so does the PAR.
> How can we reduce the synthesis time? Why is that the code which
> took lesser time to get synthesized is now taking longer?

 One thing I've noticed with XST and state machines is that past a
certain complexity, XST run time goes up exponentially when adding
more states (quickly changing from minutes to hours)

 Although since you describe only four states, that may not be your
exact problem.

You might try turning off/changing the state machine inference and
encoding settings.

What version XST?
Any weird warnings?
State machine tested in simulation for init/recovery on unexpected
inputs? 

See also Answer Records 20366, 22654, 22637, 21682

Brian


Article: 99519
Subject: Re: OpenSPARC released
From: "Ira Baxter" <idbaxter@semdesigns.com>
Date: Sat, 25 Mar 2006 22:59:57 -0600
Links: << >>  << T >>  << A >>
I found this in  design/sys/iop/sparc/ifu/rtl/sparc_ifu_rndrob.v

   ....
   assign  next_pv[0] = pv[0] | reset;

   dff #4  park_reg(.din  (next_pv),
      .clk  (clk),
      .q    (park_vec),
      .se   (se), .si(), .so());

   ....

I don't see how the #4 is legal is Verilog 2001.
Can someone explain to me under what it means,
and under what circumstances this is legal?
Is this construct part of Verilog 2001, or is it vendor specific?

-- IDB





Article: 99520
Subject: Re: PCI Configuration access and Target State Machine...
From: Ben Jackson <ben@ben.com>
Date: Sat, 25 Mar 2006 23:22:48 -0600
Links: << >>  << T >>  << A >>
On 2006-03-25, leaf <adventleaf@gmail.com> wrote:
> Yes you're minipci design worked on my pc, i did somehow used it as a
> reference, and somehow i have managed to port it into my new design,
> unfortunately the former did'nt worked on all PC on our lab.

I'm not sure which design you had problems with -- mine or your modified
version.  One thing to be aware of is that modern PCI bridge chipsets
have configurable clocks and the BIOS will disable a slot entirely if
it's not happy with the initial configuration requests to the card.  If
your code works at the first boot, you can often re-flash the card while
booted (provided the CPLD or FPGA tristates during the programming and
assuming your code comes up in a sane state without seeing a PCI RST).
However, if your card was not detected at boot, you probably can't reload
it and see it work unless you also restart the PC.

Also, my core did not generate PAR at all because the fan-in for the
necessary XOR wasn't possible in the small CPLD I was using.

> note with regards to screenshot:
> Will the bus master work with this kind of target (i.e. having Medium
> Devsel timing)?

The devsel timing has to meet the spec you put in your config space.
If you say "fast" and don't respond on the clock after the address
cycle, then the initiator could assume that no one will ever reply.
I'm not sure if (or even how) that would apply to config cycles.

Also, in your simulation you have a config space read at address '1'
which should really be a read at 0 with byte enables.  And you return
all '1's which would not be valid and could cause the problem I described
above with your BIOS.

-- 
Ben Jackson
<ben@ben.com>
http://www.ben.com/

Article: 99521
Subject: Re: Verilog Task pass value problem?
From: "Davy" <zhushenli@gmail.com>
Date: 25 Mar 2006 21:33:46 -0800
Links: << >>  << T >>  << A >>
Hi Ajeetha,

All OK, thank you!

Best regards,
Davy


Article: 99522
Subject: Re: OpenSPARC released
From: "Pablo Bleyer Kocik" <pablobleyer@hotmail.com>
Date: 25 Mar 2006 21:54:17 -0800
Links: << >>  << T >>  << A >>
Plain ol' verilog udp?


Article: 99523
Subject: Re: PacoBlaze with multiply and 16-bit add/sub instructions
From: "Pablo Bleyer Kocik" <pablobleyer@hotmail.com>
Date: 25 Mar 2006 22:27:58 -0800
Links: << >>  << T >>  << A >>
 Brian, with the following exploded setup I could finally instruct ISE
to merge two 8-bit adders to create a 16-bit one and multiplex out the
carry to get the half-carry. I don't know why my previous setups
failed... It saves 4 slices in a SP3 instead of having two separate
adders (the output mux is not considered) and the report indeed shows
that the fanout of the half MUXCY is 2.

 Regards.

---8<---

`define WIDTH 16

/* Two half adders to create a full one */
module addsub1(
	op, oc, y, a, b, c_in,
	c_out, h_out
);

input op, oc; // 0: add, 1: sub
output [`WIDTH-1:0] y;
input [`WIDTH-1:0] a, b;
input c_in;
output c_out;
output h_out;

wire [`WIDTH/2-1:0] yh, yl;

wire [`WIDTH/2-1:0]
	ah = a[`WIDTH-1:`WIDTH/2], al = a[`WIDTH/2-1:0];
wire [`WIDTH/2-1:0] bh, bl;
wire c =
	(!oc) ? 0 :
	(op) ? ~c_in : c_in;
wire d, e;

assign bh = (op) ? ~b[`WIDTH-1:`WIDTH/2] : b[`WIDTH-1:`WIDTH/2];
assign bl = (op) ? ~b[`WIDTH/2-1:0] : b[`WIDTH/2-1:0];

assign {d, yl} = al + bl + c;
assign {e, yh} = ah + bh + d;

assign h_out = (op) ? ~d : d;
assign c_out = (op) ? ~e : e;

assign y = {yh, yl};

endmodule

/*
=========================================================================
*                           HDL Synthesis
*
=========================================================================

Synthesizing Unit <addsub1>.
    Related source file is "C:/src/pacoblaze/pacoblaze/addsub.v".
    Found 8-bit adder carry in/out for signal <$n0001>.
    Found 8-bit adder carry in/out for signal <$n0002>.
    Found 1-bit 4-to-1 multiplexer for signal <c>.
    Summary:
	inferred   2 Adder/Subtractor(s).
	inferred   1 Multiplexer(s).
Unit <addsub1> synthesized.


=========================================================================
HDL Synthesis Report

Macro Statistics
# Adders/Subtractors                                   : 2
 8-bit adder carry in/out                              : 2
# Multiplexers                                         : 1
 1-bit 4-to-1 multiplexer                              : 1

=========================================================================

=========================================================================
*                       Advanced HDL Synthesis
*
=========================================================================


=========================================================================
Advanced HDL Synthesis Report

Macro Statistics
# Adders/Subtractors                                   : 2
 8-bit adder carry in/out                              : 2
# Multiplexers                                         : 1
 1-bit 4-to-1 multiplexer                              : 1

=========================================================================

=========================================================================
*                         Low Level Synthesis
*
=========================================================================
Loading device for application Rf_Device from file '3s200.nph' in
environment C:\Xilinx.

Optimizing unit <addsub1> ...

Mapping all equations...
Building and optimizing final netlist ...
Found area constraint ratio of 100 (+ 5) on block addsub1, actual ratio
is 0.

=========================================================================
*                            Final Report
*
=========================================================================
Final Results
RTL Top Level Output File Name     : addsub1.ngr
Top Level Output File Name         : addsub1
Output Format                      : NGC
Optimization Goal                  : Speed
Keep Hierarchy                     : NO

Design Statistics
# IOs                              : 53

Cell Usage :
# BELS                             : 67
#      LUT2                        : 34
#      LUT3                        : 1
#      MUXCY                       : 16
#      XORCY                       : 16
# IO Buffers                       : 53
#      IBUF                        : 35
#      OBUF                        : 18
=========================================================================

Device utilization summary:
---------------------------

Selected Device : 3s200pq208-5

 Number of Slices:                      19  out of   1920     0%
 Number of 4 input LUTs:                35  out of   3840     0%
 Number of bonded IOBs:                 53  out of    141    37%


=========================================================================
TIMING REPORT

NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
      FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
      GENERATED AFTER PLACE-and-ROUTE.

Clock Information:
------------------
No clock signals found in this design

Timing Summary:
---------------
Speed Grade: -5

   Minimum period: No path found
   Minimum input arrival time before clock: No path found
   Maximum output required time after clock: No path found
   Maximum combinational path delay: 12.573ns

Timing Detail:
--------------
All values displayed in nanoseconds (ns)

=========================================================================
Timing constraint: Default path analysis
  Total number of paths / destination ports: 824 / 18
-------------------------------------------------------------------------
Delay:               12.573ns (Levels of Logic = 21)
  Source:            op (PAD)
  Destination:       c_out (PAD)

  Data Path: op to c_out
                                Gate     Net
    Cell:in->out      fanout   Delay   Delay  Logical Name (Net Name)
    ----------------------------------------  ------------
     IBUF:I->O            19   0.715   1.403  op_IBUF (op_IBUF)
     LUT2:I1->O            1   0.479   0.976  bl<0>1 (bl<0>)
     LUT2:I0->O            1   0.479   0.000  addsub1_yl<0>lut (N4)
     MUXCY:S->O            1   0.435   0.000  addsub1_yl<0>cy
(addsub1_yl<0>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<1>cy
(addsub1_yl<1>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<2>cy
(addsub1_yl<2>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<3>cy
(addsub1_yl<3>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<4>cy
(addsub1_yl<4>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<5>cy
(addsub1_yl<5>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yl<6>cy
(addsub1_yl<6>_cyo)
     MUXCY:CI->O           2   0.056   0.000  addsub1_yl<7>cy (d)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<0>cy
(addsub1_yh<0>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<1>cy
(addsub1_yh<1>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<2>cy
(addsub1_yh<2>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<3>cy
(addsub1_yh<3>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<4>cy
(addsub1_yh<4>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<5>cy
(addsub1_yh<5>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub1_yh<6>cy
(addsub1_yh<6>_cyo)
     MUXCY:CI->O           1   0.265   0.976  addsub1_yh<7>cy (e)
     LUT2:I0->O            1   0.479   0.681  c_out1 (c_out_OBUF)
     OBUF:I->O                 4.909          c_out_OBUF (c_out)
    ----------------------------------------
    Total                     12.573ns (8.538ns logic, 4.035ns route)
                                       (67.9% logic, 32.1% route)
*/


/* Two separate adders */
module addsub2(
	op, oc, y, yl, a, b, c_in,
	c_out, h_out
);

input op, oc; // 0: add, 1: sub
output [`WIDTH-1:0] y;
input [`WIDTH-1:0] a, b;
input c_in;
output c_out;
output h_out;

output [`WIDTH/2-1:0] yl;

wire [`WIDTH/2-1:0]
	al = a[`WIDTH/2-1:0];
wire [`WIDTH-1:0] bs;
wire [`WIDTH/2-1:0] bl;
wire c =
	(!oc) ? 0 :
	(op) ? ~c_in : c_in;
wire d, e;

assign bl = (op) ? ~b[`WIDTH/2-1:0] : b[`WIDTH/2-1:0];
assign bs = (op) ? ~b : b;

assign {d, yl} = al + bl + c;
assign {e, y} = a + bs + c;

assign h_out = (op) ? ~d : d;
assign c_out = (op) ? ~e : e;

endmodule


/*
=========================================================================
*                           HDL Synthesis
*
=========================================================================

Synthesizing Unit <addsub2>.
    Related source file is "C:/src/pacoblaze/pacoblaze/addsub.v".
    Found 16-bit adder carry in/out for signal <$n0001>.
    Found 8-bit adder carry in/out for signal <$n0002>.
    Found 1-bit 4-to-1 multiplexer for signal <c>.
    Summary:
	inferred   2 Adder/Subtractor(s).
	inferred   1 Multiplexer(s).
Unit <addsub2> synthesized.


=========================================================================
HDL Synthesis Report

Macro Statistics
# Adders/Subtractors                                   : 2
 16-bit adder carry in/out                             : 1
 8-bit adder carry in/out                              : 1
# Multiplexers                                         : 1
 1-bit 4-to-1 multiplexer                              : 1

=========================================================================

=========================================================================
*                       Advanced HDL Synthesis
*
=========================================================================


=========================================================================
Advanced HDL Synthesis Report

Macro Statistics
# Adders/Subtractors                                   : 2
 16-bit adder carry in/out                             : 1
 8-bit adder carry in/out                              : 1
# Multiplexers                                         : 1
 1-bit 4-to-1 multiplexer                              : 1

=========================================================================

=========================================================================
*                         Low Level Synthesis
*
=========================================================================
Loading device for application Rf_Device from file '3s200.nph' in
environment C:\Xilinx.

Optimizing unit <addsub2> ...

Mapping all equations...
Building and optimizing final netlist ...
Found area constraint ratio of 100 (+ 5) on block addsub2, actual ratio
is 1.

=========================================================================
*                            Final Report
*
=========================================================================
Final Results
RTL Top Level Output File Name     : addsub2.ngr
Top Level Output File Name         : addsub2
Output Format                      : NGC
Optimization Goal                  : Speed
Keep Hierarchy                     : NO

Design Statistics
# IOs                              : 61

Cell Usage :
# BELS                             : 91
#      LUT2                        : 34
#      LUT3                        : 9
#      MUXCY                       : 24
#      XORCY                       : 24
# IO Buffers                       : 61
#      IBUF                        : 35
#      OBUF                        : 26
=========================================================================

Device utilization summary:
---------------------------

Selected Device : 3s200pq208-5

 Number of Slices:                      23  out of   1920     1%
 Number of 4 input LUTs:                43  out of   3840     1%
 Number of bonded IOBs:                 61  out of    141    43%


=========================================================================
TIMING REPORT

NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
      FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
      GENERATED AFTER PLACE-and-ROUTE.

Clock Information:
------------------
No clock signals found in this design

Timing Summary:
---------------
Speed Grade: -5

   Minimum period: No path found
   Minimum input arrival time before clock: No path found
   Maximum output required time after clock: No path found
   Maximum combinational path delay: 12.955ns

Timing Detail:
--------------
All values displayed in nanoseconds (ns)

=========================================================================
Timing constraint: Default path analysis
  Total number of paths / destination ports: 1012 / 26
-------------------------------------------------------------------------
Delay:               12.955ns (Levels of Logic = 21)
  Source:            op (PAD)
  Destination:       c_out (PAD)

  Data Path: op to c_out
                                Gate     Net
    Cell:in->out      fanout   Delay   Delay  Logical Name (Net Name)
    ----------------------------------------  ------------
     IBUF:I->O            27   0.715   1.721  op_IBUF (op_IBUF)
     LUT2:I1->O            2   0.479   1.040  bs<0>1 (bs<0>)
     LUT2:I0->O            1   0.479   0.000  addsub2_y<0>lut (N4)
     MUXCY:S->O            1   0.435   0.000  addsub2_y<0>cy
(addsub2_y<0>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<1>cy
(addsub2_y<1>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<2>cy
(addsub2_y<2>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<3>cy
(addsub2_y<3>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<4>cy
(addsub2_y<4>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<5>cy
(addsub2_y<5>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<6>cy
(addsub2_y<6>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<7>cy
(addsub2_y<7>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<8>cy
(addsub2_y<8>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<9>cy
(addsub2_y<9>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<10>cy
(addsub2_y<10>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<11>cy
(addsub2_y<11>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<12>cy
(addsub2_y<12>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<13>cy
(addsub2_y<13>_cyo)
     MUXCY:CI->O           1   0.056   0.000  addsub2_y<14>cy
(addsub2_y<14>_cyo)
     MUXCY:CI->O           1   0.265   0.976  addsub2_y<15>cy (e)
     LUT2:I0->O            1   0.479   0.681  c_out1 (c_out_OBUF)
     OBUF:I->O                 4.909          c_out_OBUF (c_out)
    ----------------------------------------
    Total                     12.955ns (8.538ns logic, 4.418ns route)
                                       (65.9% logic, 34.1% route)
*/

--
PabloBleyerKocik /
 pablo          /"It is a terrible thing to see and have no vision."
  @bleyer.org  / -- Helen Keller


Article: 99524
Subject: Re: PCI Configuration access and Target State Machine...
From: "leaf" <adventleaf@gmail.com>
Date: 25 Mar 2006 22:40:47 -0800
Links: << >>  << T >>  << A >>
Ben i was wrong when i said that the design didnt't work in all PC on
our lab,
but its rather didn't work for all but it did somehow on my PC but not
with others,
and that's the main problem i faced which forced me to re-design using
the State machine design
as described on Appendix B of PCI 3.0 Spec

To add, the former design that i made based on your mini pci worked
well on my pc only and other pc in our lab with the same motherboard.
It worked because i was able to read/write to the registers of back-end
device.

>Also, in your simulation you have a config space read at address '1'
>which should really be a read at 0 with byte enables.  And you return
>all '1's which would not be valid and could cause the problem I described
>above with your BIOS.

Sorry for not making the screenshot more readable, but that was 10h,
i'm writing to BAR0 and reading it back.
the resulting data is FFFFFF08 ( Memory  and 256 bytes).

ps. when BUS MASTER reads configuration especially the Status register
w/c has the devsel timing, how long will it Assert IRDY#, because at
this moment still doesn't know the devsel timing for this spefic
Device?

Young Leaf




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
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

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