[CALU] Re: Quartus - MultiCycle Path

  • From: Elshuber Martin <e9825286@xxxxxxxxxxxxxxxxxxxx>
  • To: calu-ss2010-tuwien@xxxxxxxxxxxxx
  • Date: Wed, 19 May 2010 09:46:33 +0200

Warum löst due die multiplication nicht wirklich in 2 zyklen auf;

alla:

a*b=((a&0xFFFF)+(a&0xFFFF0000))*b=(a&0xFFFF)*b+(a&0xFFFF0000)*b <=> (a(15 downto 0)*b)+((a(31 downto 16)*b)<<16)

cycle 1: reg<=(a(15 downto 0)*b)
cylce 2: result<=(reg+(a(31 downto 16)*b)&x"0000")

oder so in etwa dan wären es 2 16x32 bit multiplicationen und eine addition

lg martin


Am 19.05.2010 01:56, schrieb Günther Wimpassinger:
Hallo Wolfgang,

wie kann ich dem klassischen Timing Analyzer unter Quartus beibringen, dass ein bestimmter Pfad (32bit hw-multiply) zwischen zwei Registern mehrere Cycles dauern darf?

Aus der Quartus-Hilfe werde ich nicht schlau und das "set_multicycle_path" Ding gilt wohl nur für den "TimeQuest" Analyzer.

Ich will sowas machen

EX-Stage  WB-Stage
P a       P
I--+      I
P   \ res P
E    *----E
|   /     |
R--+      R
E b       E
G         G
^         ^
+---------+---- clk

Bei der Multiplikation wird im 1ten Cycle die Pipeline
(EX und alles davor) gestalled und in WB wird ein "NOP"
eingefügt. Im 2ten Cycle wird/soll dann das Ergg im
WB-Stage Pipe-Register übernommen werden.

mfg
Günther Wimpassinger




Other related posts: