реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> непонятки с симплифай и, FIFO16 на v4
des00
сообщение Sep 7 2005, 05:26
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Добрый день господа!

есть двухклоковый дизайн 1 частота ~30MHz, другая 100/200MHz.
развязанный между собой 2 ФИФО. Сигналы чтения, записи по клок доменам разнесены правильно (проверил раз на 10, да и в железе работатет).
Констрейны сиплифаю прописаны тоже, вроде бы, в соответсвии с требованиями документации.

Проблема в том, что симплифай находит дополнительную частоту (system), по сигалам записи, чтения со стороны более высокой частоты.
Причем на RTL ее нет, латчей на этим сигналам (записи, чтения) тоже нет.

В чем может быть проблема ?


--------------------
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Sep 7 2005, 09:10
Сообщение #2


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(des00 @ Sep 7 2005, 08:26)
Добрый день господа!

есть двухклоковый дизайн 1 частота ~30MHz, другая 100/200MHz.
развязанный между собой 2 ФИФО. Сигналы чтения, записи по клок доменам разнесены правильно (проверил раз на 10, да и в железе работатет).
Констрейны сиплифаю прописаны тоже, вроде бы, в соответсвии с требованиями документации.

Проблема в том, что симплифай находит дополнительную частоту (system), по сигалам записи, чтения со стороны более высокой частоты.
Причем на RTL ее нет, латчей на этим сигналам (записи, чтения) тоже нет.

В чем может быть проблема ?
*

Дык эта...читаем документ - Synplify Pro Reference Manual и видим в главе Timing report следующее

Performance Summary
The Performance Summary section of the timing report reports estimated and
requested frequencies for the clocks, with the clocks sorted by negative slack.
The timing report has a different section for detailed clock information (see
Detailed Clock Report, on page 7-59). The Performance Summary lists the
following information for each clock in the design:
Performance Summary Description
Starting Clock The name of the clock. If the clock name is
system, the clock is a collection of clocks with
an undefined clock event. Rising and falling
edge clocks are reported as one clock domain.
Requested Frequency Target frequency.
Estimated Frequency Estimated frequency after synthesis.
Requested Period Target clock period.
Estimated Period Estimated period after synthesis.
Slack Difference between Requested Period and
Estimated Period.
The none category is a collection of clocks with
an undefined clock event. This can include
clocks that use the global frequency. Slack for
a starting clock listed as none is the worst slack
for all paths in the none category.
Clock Type The type of clock: inferred, declared, derived or
system. The system clock is the delay for the
combinatorial path.
Performance Summary Description

Тоесть - The system clock is the delay for the
combinatorial path.


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 10:09
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Postoroniy_V @ Sep 7 2005, 04:10)
Тоесть -  The system clock is the delay for the
combinatorial path.


Спасибо за ответ, но вот что странно :
Цитата
If the clock name is
system, the clock is a collection of clocks with
an undefined clock event. Rising and falling
edge clocks are reported as one clock domain.

Если я правильно перевел "Если имя клока - систем (system), то клок это набор клоков с неопределнным событием(event). Возрастающие и спадающие фронты, в отчете идут в одном клокдомене."
с другой стороны
Цитата
The system clock is the delay for the
combinatorial path.

"Систем клок это задержка комбинаторного пути".

Но это в принципе относиться к любому определению клока, как комб задержка между тригерами.

У меня же обработки событий WREN, RDEN (по которыйм он находит клок) нет.
Весь дизайн, в каждом из двух клокдоменов, синхронный


--------------------
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Sep 7 2005, 10:40
Сообщение #4


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(des00 @ Sep 7 2005, 13:09)
Цитата(Postoroniy_V @ Sep 7 2005, 04:10)
Тоесть -  The system clock is the delay for the
combinatorial path.


Спасибо за ответ, но вот что странно :
Цитата
If the clock name is
system, the clock is a collection of clocks with
an undefined clock event. Rising and falling
edge clocks are reported as one clock domain.

Если я правильно перевел "Если имя клока - систем (system), то клок это набор клоков с неопределнным событием(event). Возрастающие и спадающие фронты, в отчете идут в одном клокдомене."
с другой стороны
Цитата
The system clock is the delay for the
combinatorial path.

"Систем клок это задержка комбинаторного пути".

Но это в принципе относиться к любому определению клока, как комб задержка между тригерами.

У меня же обработки событий WREN, RDEN (по которыйм он находит клок) нет.
Весь дизайн, в каждом из двух клокдоменов, синхронный
*


system, the clock is a collection of clocks with
an undefined clock event.
это я бы так перевёл - "system clock это набор тактовых частот с неопределеными событиями по активным фронтам. "
что думаю у вас и есть, тоесть думаю что у вас не задан FALSE PATH
может в этом дело?
да и потот дался вам этот system clock? где пробелма то? rolleyes.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 10:56
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Postoroniy_V @ Sep 7 2005, 05:40)
что думаю у вас и есть, тоесть думаю что у вас не задан FALSE PATH
может в этом дело?
да и потот дался вам этот system clock? где пробелма то?  rolleyes.gif
*

фалш путь это немного из другой оперы smile.gif
зачем надо, глаза мозолит smile.gif и интересно где там есть третий клок
вот код того модуля
Цитата
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

library unisim;

library synplify;
use synplify.attributes.all;

entity usb_ctrl_dev is
generic (WIDTH : integer := 16; EPOUT : string := "EP2"; EPIN : string := "EP6");
port
(
in_reset_b : in std_logic;
--- usb interface 
USB_IFCLK : in std_logic;
USB_RST_N : out std_logic;
USB_FD  : inout std_logic_vector(WIDTH-1 downto 0);

USB_SLRD : out std_logic;
USB_SLWR : out std_logic;
USB_SLOE : out std_logic;
USB_FA0  : out std_logic;
USB_FA1  : out std_logic;
USB_PEND : out std_logic; 
USB_SLCS_N : out std_logic;
           
USB_FLAGA : in std_logic;
USB_FLAGB : in std_logic;
USB_FLAGC : in std_logic;
--- ind interface 
LED  : out std_logic;
-- system interface --------------------------------
in_fifo_clock  : in std_logic;

in_fifo_pend  : in std_logic; -- äîëæåí ïîäàâàòüñÿ îäíîâðåìåííî ñ ñèãíàëîì in_fifo_wr_req
in_fifo_wr_req  : in std_logic;
in_fifo_wr_data : in std_logic_vector(WIDTH-1 downto 0);
out_fifo_wr_full : out std_logic;
out_fifo_wr_empty : out std_logic;

in_fifo_rd_req  : in std_logic;
out_fifo_rd_data : out std_logic_vector(WIDTH-1 downto 0);
out_fifo_rd_empty : out std_logic
);
end entity usb_ctrl_dev;

architecture usb_ctrl_dev of usb_ctrl_dev is
component fifo16
generic(
  ALMOST_FULL_OFFSET : BIT_VECTOR := X"080";
  ALMOST_EMPTY_OFFSET : BIT_VECTOR := X"080";
  DATA_WIDTH : INTEGER := 36;
  FIRST_WORD_FALL_THROUGH : BOOLEAN := false);
port(
  ALMOSTEMPTY : out std_ulogic;
  ALMOSTFULL : out std_ulogic;
  DO : out std_logic_vector(31 downto 0);
  DOP : out std_logic_vector(3 downto 0);
  EMPTY : out std_ulogic;
  FULL : out std_ulogic;
  RDCOUNT : out std_logic_vector(11 downto 0);
  RDERR : out std_ulogic;
  WRCOUNT : out std_logic_vector(11 downto 0);
  WRERR : out std_ulogic;
  DI : in std_logic_vector(31 downto 0);
  DIP : in std_logic_vector(3 downto 0);
  RDCLK : in std_ulogic;
  RDEN : in std_ulogic;
  RST : in std_ulogic;
  WRCLK : in std_ulogic;
  WREN : in std_ulogic);
end component;
-- synthesis translate_off
for all: fifo16 use entity unisim.fifo16(fifo16_v);
-- synthesis translate_on
-------------------------------------------------------------------------------------------------------------------------------------
signal fifo_reset : std_logic;

signal wr_fifo_wr_clk  : std_logic;
signal wr_fifo_wr_req  : std_logic;
signal wr_fifo_wr_data    : std_logic_vector(31 downto 0);
signal wr_fifo_wr_almos_full  : std_logic;
signal wr_fifo_wr_pend_data  : std_logic_vector(3 downto 0);

signal wr_fifo_rd_clk  : std_logic;
signal wr_fifo_rd_req  : std_logic;
signal wr_fifo_rd_data  : std_logic_vector(31 downto 0);
signal wr_fifo_rd_err  : std_logic;
signal wr_fifo_rd_empty : std_logic;
signal wr_fifo_rd_almos_empty  : std_logic;
signal wr_fifo_rd_pend_data  : std_logic_vector(3 downto 0);
-------------------------------------------------------------------------------------------------------------------------------------
signal rd_fifo_wr_clk : std_logic;
signal rd_fifo_wr_req : std_logic;
signal rd_fifo_wr_data    : std_logic_vector(31 downto 0);
signal rd_fifo_wr_almos_full  : std_logic;

signal rd_fifo_rd_clk  : std_logic;
signal rd_fifo_rd_req  : std_logic;
signal rd_fifo_rd_data  : std_logic_vector(31 downto 0);
signal rd_fifo_rd_err  : std_logic;
signal rd_fifo_rd_empty : std_logic;
signal rd_fifo_rd_almos_empty  : std_logic;
--- usb signal ------------------------------------------------------------------------------------------------------------------
signal usb_clk : std_logic;
signal usb_sloe_int : std_logic;
signal usb_slcs_int : std_logic;
signal usb_pend_int : std_logic;     
signal usb_slrd_int : std_logic;
signal usb_slwr_int : std_logic;

signal usb_rd_data : std_logic_vector(WIDTH-1 downto 0);
signal usb_wr_data : std_logic_vector(WIDTH-1 downto 0);

signal usb_rd_fifo_empty  : std_logic;
signal usb_wr_fifo_full  : std_logic;

signal usb_pend_need : std_logic;
-- FSM ---------------------------------------------------------
type t_state is (idle, set_rd_addr, set_rd_ctrl_signal, select_rd_ctrl, set_wr_addr, set_wr_ctrl_signal, select_wr_ctrl, set_pend_ctrl_signal);
signal state : t_state;
attribute SYN_ENCODING of state : signal is "onehot";

signal wr_ena : std_logic;
signal rd_ena : std_logic;

signal blinc : std_logic;
signal blinc_counter : std_logic_vector(20 downto 0);
begin 

USB_RST_N <= '1';

USB_FD <= usb_wr_data when (usb_sloe_int = '0') else (others => 'Z');
usb_rd_data <= USB_FD;

USB_SLOE <= not usb_sloe_int;
USB_SLCS_N  <= not usb_slcs_int;
USB_PEND <= not usb_pend_int;

USB_SLRD <= not usb_slrd_int;
USB_SLWR <= not usb_slwr_int;

usb_rd_fifo_empty <= not USB_FLAGA;
usb_wr_fifo_full <= not USB_FLAGC;
usb_clk <= USB_IFCLK;

fifo_reset <= not in_reset_b;

LED <= blinc;
--------- blinc --------------------------------------------------------------------------------------------------------------------------
process(usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  blinc_counter <= (others => '0');
  blinc <= '0';
  elsif (rising_edge(usb_clk)) then
  blinc_counter <= blinc_counter + '1';
  if (blinc_counter = conv_std_logic_vector(1250000, blinc_counter'length)) then
    blinc <= not blinc;
  end if;
  end if;
end process;
---------------------------------------------------------------------------------------------------------------
-- write up level, read low level
wr_fifo : fifo16
generic map(
  ALMOST_FULL_OFFSET  => X"004", -- it's maximal
  ALMOST_EMPTY_OFFSET => X"006", -- it's minimal
  DATA_WIDTH => 18,  -- + 1 for pend signal
  FIRST_WORD_FALL_THROUGH => false)
port map(
  ALMOSTEMPTY => wr_fifo_rd_almos_empty,
  ALMOSTFULL  => wr_fifo_wr_almos_full,
  DO  => wr_fifo_rd_data,
  DOP  => wr_fifo_rd_pend_data,
  EMPTY  => wr_fifo_rd_empty,
  FULL  => open,
  RDCOUNT => open,
  RDERR  => wr_fifo_rd_err,
  WRCOUNT => open,
  WRERR  => open,
  DI  => wr_fifo_wr_data,
  DIP  => wr_fifo_wr_pend_data,
  RDCLK  => wr_fifo_rd_clk,
  RDEN  => wr_fifo_rd_req,
  RST  => fifo_reset,
  WRCLK  => wr_fifo_wr_clk,
  WREN  => wr_fifo_wr_req
);
------------------------------------------------------------------------
-- read up level, write low level
rd_fifo : fifo16
generic map(
  ALMOST_FULL_OFFSET  => X"004", -- it's maximal
  ALMOST_EMPTY_OFFSET => X"006", -- it's minimal
  DATA_WIDTH => 18,
  FIRST_WORD_FALL_THROUGH => false)
port map(
  ALMOSTEMPTY => rd_fifo_rd_almos_empty,
  ALMOSTFULL  => rd_fifo_wr_almos_full,
  DO  => rd_fifo_rd_data,
  DOP  => open,
  EMPTY  => rd_fifo_rd_empty,
  FULL  => open,
  RDCOUNT => open,
  RDERR  => rd_fifo_rd_err,
  WRCOUNT => open,
  WRERR  => open,
  DI  => rd_fifo_wr_data,
  DIP  => (others => '0'),
  RDCLK  => rd_fifo_rd_clk,
  RDEN  => rd_fifo_rd_req,
  RST  => fifo_reset,
  WRCLK  => rd_fifo_wr_clk,
  WREN  => rd_fifo_wr_req
);
----- to up fifo interface -----------------------------------------------------------------------------------------------------
wr_fifo_wr_clk  <= in_fifo_clock;
wr_fifo_wr_req  <= in_fifo_wr_req;
out_fifo_wr_full  <= wr_fifo_wr_almos_full;
out_fifo_wr_empty <= wr_fifo_rd_empty;

wr_fifo_wr_data(in_fifo_wr_data'range)    <= in_fifo_wr_data;
wr_fifo_wr_data(31 downto in_fifo_wr_data'length)  <= (others => '0');

wr_fifo_wr_pend_data(0)    <= in_fifo_pend;
wr_fifo_wr_pend_data(3 downto 1)  <= (others => '0');

rd_fifo_rd_clk  <= in_fifo_clock;
rd_fifo_rd_req  <= in_fifo_rd_req;
out_fifo_rd_data  <= rd_fifo_rd_data(out_fifo_rd_data'range);
out_fifo_rd_empty  <= rd_fifo_rd_empty;   
----- to low fifo interface -----------------------------------------------------------------------------------------------------
wr_fifo_rd_clk  <= usb_clk;
usb_pend_need <= wr_fifo_rd_pend_data(0);
rd_fifo_wr_clk <= usb_clk;
---------------------------------------------------------------------------------------------------------------------------------
wr_ena <= '1' when (wr_fifo_rd_empty /= '1')and(usb_wr_fifo_full /= '1') else '0';
rd_ena <= '1' when (usb_rd_fifo_empty /= '1')and(rd_fifo_wr_almos_full /= '1') else '0';
 
-- äâóõ òàêòíàÿ ìàøèíà ñîñòîÿíèé
fsm_jump_proc :
process (usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  state <= idle;
  elsif (rising_edge(usb_clk)) then
  state <= idle;
  case (state) is
    when idle =>
    -- åñëè åñòü äàííûå íà çàïèñü è óñá ãîòîâ äàííûå ïðèíÿòü òî
    if (wr_ena = '1') then
      state <= set_wr_addr;
    -- åñëè óñá ãîòîâ îòäàòü äàííûå è áóôåð íå çàïîëíåí òî
    elsif (rd_ena = '1') then
      state <= set_rd_addr;
    end if; 
   
    when set_rd_addr  => state <= set_rd_ctrl_signal;  -- ñòàâèì àäðåññ
    when set_rd_ctrl_signal => state <= select_rd_ctrl;  -- ÷èòàåì ñ óñá
    when select_rd_ctrl =>          -- ðàçáèðàåìñÿ ÷òî ýòî áûëî, ïèøåì â ôèôî
    if (rd_ena = '1') then state <= set_rd_ctrl_signal;
    end if;
   
    when set_wr_addr  => state <= select_wr_ctrl;    -- ñòàâèì àäðåññ è ÷èòàåì ÷òî áûëî â ôèôî
    when select_wr_ctrl =>          -- ðàçáèðàåìñÿ ÷òî æå ïðî÷èòàëè èç ôèôî
    if (usb_pend_need = '1') then  state <= set_pend_ctrl_signal;
    elsif (wr_ena = '1')  then state <= set_wr_ctrl_signal;
    end if;   
   
    when set_wr_ctrl_signal  => state <= select_wr_ctrl;  -- ïèøåì â óñá äàííûå, åñëè åñòü ÷òî ÷èòàåì èç ôèôî
    when set_pend_ctrl_signal  => state <= idle;  -- ïèøåì â óñá ïåíäû
    when others => null;
  end case;     
  end if;
end process fsm_jump_proc;

--------------- usb fifo addr -------------------------------------------------------------------
fifo_addr0 :
if (EPOUT = "EP4")and(EPIN = "EP8") generate
  process (usb_clk) is
  begin
  if (rising_edge(usb_clk)) then
    if (state = set_rd_addr) then
    -- read addr EP4
    USB_FA0 <= '1';
    USB_FA1 <= '0';
    elsif (state = set_wr_addr) then
    -- write addr EP8
    USB_FA0 <= '1';
    USB_FA1 <= '1';
    end if;
  end if;
  end process;
end generate fifo_addr0;
fifo_addr1 :
if (EPOUT = "EP2")and(EPIN = "EP6") generate
  process (usb_clk) is
  begin
  if (rising_edge(usb_clk)) then
    if (state = set_rd_addr) then
    -- read addr EP2
    USB_FA0 <= '0';
    USB_FA1 <= '0';
    elsif (state = set_wr_addr) then
    -- write addr EP6
    USB_FA0 <= '0';
    USB_FA1 <= '1';
    end if;
  end if;
  end process;
end generate fifo_addr1;
------------ usb cs -----------------------------------------------------------------------------------
-- sc_cs îì ðóëÿò 3 ïðîöåññà
cs_proc :
process (usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  usb_slcs_int <= '0';
  elsif (rising_edge(usb_clk)) then
  usb_slcs_int <= '0';
  if (state = set_rd_ctrl_signal)or(state = set_wr_ctrl_signal)or(state = set_pend_ctrl_signal) then
    usb_slcs_int <= '1';
  end if;
  end if;
end process cs_proc;   
---------------------- usb read process ------------------------------------------------------
---------------------- usb read ctrl ------------------------------------------------------
rd_ctrl_proc :
process (usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  usb_sloe_int <= '0';
  usb_slrd_int <= '0';
  elsif (rising_edge(usb_clk)) then
  usb_sloe_int <= '0';
  usb_slrd_int <= '0';
  if (state = set_rd_ctrl_signal) then
    usb_sloe_int <= '1';
    usb_slrd_int <= '1';
  end if;
  end if;
end process rd_ctrl_proc;
---------------------- usb capture process ------------------------------------------------------ 
rd_fifo_wr_data(31 downto usb_rd_data'length)  <= (others => '0');

capture_data_proc :
process (usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  rd_fifo_wr_data(usb_rd_data'range) <= (others => '0');
  rd_fifo_wr_req <= '0';
  elsif (rising_edge(usb_clk)) then
  rd_fifo_wr_req <= '0';
  if (usb_slrd_int = '1') then rd_fifo_wr_req <= '1';
  end if;
  if (usb_slrd_int = '1') then rd_fifo_wr_data(usb_rd_data'range) <= usb_rd_data;
  end if;
  end if;
end process capture_data_proc;

--------------- write process ----------------------------------------------------------------
---------- wr_fifo rd ctrl --------------------------------------------------------------------
wr_fifo_rd_req <= '1' when (state = set_wr_addr)or((state = set_wr_ctrl_signal)and(wr_ena = '1')) else '0';
---------- usb wr ctrl --------------------------------------------------------------------
wr_ctrl_proc :
process(usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  usb_slwr_int <= '0';
  usb_wr_data <= (others => '0');
  elsif (rising_edge(usb_clk)) then
  if (state = set_wr_ctrl_signal) then usb_wr_data <= wr_fifo_rd_data(usb_wr_data'range);
  end if;
  usb_slwr_int <= '0';
  if (state = set_wr_ctrl_signal) then usb_slwr_int <= '1';
  end if;
  end if;
end process wr_ctrl_proc; 
--------------- pend process --------------------------------------------------------
pend_proc :
process (usb_clk, in_reset_b) is
begin
  if (in_reset_b = '0') then
  usb_pend_int <= '0';
  elsif (rising_edge(usb_clk))then
  usb_pend_int <= '0';
  if (state = set_pend_ctrl_signal) then usb_pend_int <= '1';
  end if;
  end if;
end process pend_proc;

end architecture usb_ctrl_dev;

вот файл констрейнов
Цитата
................................
define_clock            -name {p:USB_IFCLK}  -freq 50.000 -clockgroup default_clkgroup_0
define_clock            -name {p:in_fifo_clock}  -freq 200.000 -clockgroup default_clkgroup_1
................................

А вот отчет симплифая о клоках
Цитата
......................
Starting Clock    Frequency    Frequency    Period        Period        Slack      Type        Group           
----------------------------------------------------------------------------------------------------------------------
USB_IFCLK          50.0 MHz      167.9 MHz    20.000        5.956        14.044      declared    default_clkgroup_0
in_fifo_clock      200.0 MHz    NA            5.000        NA            NA          declared    default_clkgroup_1
System            1.0 MHz      265.2 MHz    1000.000      3.771        996.229    system      default_clkgroup 
================================================================================
======================================
.......................
====================================
Detailed Report for Clock: System
====================================



Starting Points with Worst Slack
********************************

            Starting                                                  Arrival         
Instance    Reference    Type      Pin      Net                    Time        Slack
            Clock                                                                       
------------------------------------------------------------------------------------------
wr_fifo      System        FIFO16    EMPTY    out_fifo_wr_empty_c    0.764      16.601
wr_fifo      System        FIFO16    EMPTY    out_fifo_wr_empty_c    0.764      16.601
================================================================================
==========


Ending Points with Worst Slack
******************************

            Starting                                                  Required           
Instance    Reference    Type      Pin      Net                      Time        Slack 
            Clock                                                                         
--------------------------------------------------------------------------------------------
state[7]    System        FDP        D        N_88_i                  19.930      16.601
state[2]    System        FDC        D        state_1_sqmuxa_2        19.930      17.494
state[3]    System        FDC        D        state_0_sqmuxa          19.930      18.321
state[6]    System        FDC        D        state_1_sqmuxa          19.930      18.321
wr_fifo      System        FIFO16    RDEN    un3_wr_fifo_rd_req_i    999.236      996.229
wr_fifo      System        FIFO16    RDEN    un3_wr_fifo_rd_req_i    999.236      996.229
================================================================================
============
......................


симплифай находит клок где то внутрях самого FIFO16, но вот где ?
я бы понял если бы он нашел перекос клоков, т.к. внутри ФИФО присходит переход их одного клок домена в другой, по симплифай твердит именно про клок
smile.gif


--------------------
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 7 2005, 11:03
Сообщение #6


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



А в отчете PAR имеется этот тактовый сигнал?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 11:27
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(3.14 @ Sep 7 2005, 06:03)
А в отчете PAR имеется этот тактовый сигнал?
*


нет, в отчете PARA данного сигнала нет


--------------------
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 7 2005, 11:34
Сообщение #8


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Значит нет и проблемы.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 11:38
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(3.14 @ Sep 7 2005, 06:34)
Значит нет и проблемы.
*


smile.gif в принципе да, как я уже писал что блок работает нормально,
просто думал что есть какие то особености при работе с FIFO16, которые я не учел.



ЗЫ. Но глаза все равно мозолит smile.gif)


--------------------
Go to the top of the page
 
+Quote Post
vetal
сообщение Sep 7 2005, 11:45
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Если вы уберете галку "Use clock period for unconstrained io", то synplify будет работать только с вашими клоками.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 11:52
Сообщение #11


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vetal @ Sep 7 2005, 06:45)
Если вы уберете галку "Use clock period for unconstrained io", то synplify будет работать только с вашими клоками.
*

не поверите я ее никогда и не ставил smile.gif


--------------------
Go to the top of the page
 
+Quote Post
vetal
сообщение Sep 7 2005, 11:59
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Я соглашусь, что на это не стоит обращать внимание, чотя полезно, т.к. оно показывает статическую составляющую вашего проекта.
Только что ставил эксперимент c птичкой оно есть, а без птички его нет.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 12:07
Сообщение #13


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vetal @ Sep 7 2005, 06:59)
Я соглашусь, что на это не стоит обращать внимание, чотя полезно, т.к. оно показывает статическую составляющую вашего проекта.
Только что ставил эксперимент c птичкой оно есть, а  без птички его нет.
*


хмм а вот это интересно, может быть у меня аспирин не той системы,
замечал я за симплифаем, что у меня стоит странные глюки.

Хотя эта опция относиться вроде к IO ко входу/выходу и предназначена для оценки "внешней" тактовой частоты, т.е. учитывет tsu, th для IO ячеек.

Нужно еще раз проверить, галка снята точно.


--------------------
Go to the top of the page
 
+Quote Post
vetal
сообщение Sep 7 2005, 15:21
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



У меня на разных версиях synplify обработка ведется нормально, исчезает/появляется в отчете этот параметр.
Галка работает не с библиотечными элементами эвв(физическими), а со входами и выходами модуля(логическими).
Рекомендую сделать тестовый проект, со схемой чуть сложнее инвертора, и проанализировать результат.
При работайщей опции считается что у вас на входе и выходе модуля стоят регистры, и тактируются некоторым виртуальным тактовым сигналом, значение которого и появляется в отчете. Это позволяет определить максимальную частоту системы, в которой вообще нет ни одного триггера.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 7 2005, 15:45
Сообщение #15


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(vetal @ Sep 7 2005, 10:21)
У меня на разных версиях synplify обработка ведется нормально, исчезает/появляется в отчете этот параметр.
Галка работает не с библиотечными элементами эвв(физическими), а со входами и выходами модуля(логическими).
Рекомендую сделать тестовый проект, со схемой чуть сложнее инвертора, и проанализировать результат.
При работайщей опции считается что у вас на входе и выходе модуля стоят регистры, и тактируются некоторым виртуальным тактовым сигналом, значение которого и появляется в отчете. Это позволяет определить максимальную частоту системы, в которой вообще нет ни одного триггера.
*


Спасибо за разьяснение.
Обязательно попробую, вот только симплифай переставлю, что то у моего ИМХО башню сорвало,
рабочий проект не работают, весят в разы больше, левые клоки вылезли ....
похоже умирает он у меня sad.gif
smile.gif
завтра результаты сообщу


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01571 секунд с 7
ELECTRONIX ©2004-2016