Warnings bei ModelSIM XE II 5.8c

OP #671123
Lesenswert?

Hallo,
Beim Laden meiner Testbench erhalte ich eine ganze Reihe Warnings 
ähnlich der nachfolgend dargestellten:
1
#    Time: 0 ps  Iteration: 0  Instance: /kusb_io_flex_testbench_readertest_r1a_mode0/mykusb_io_flex/myreader1/myreaderstepcount
2
# ** Warning: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0.
3
#    Time: 0 ps  Iteration: 0  Instance: /kusb_io_flex_testbench_readertest_r1a_mode0/mykusb_io_flex/myreader1/myreaderstepcount
4
# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).

Ist das ein Problem für die Implementation?
Wenn ja - wie können die Warnings vermieden werden?

Gruss, Martin
#671152
Lesenswert?

@ Martin Kohler (mkohler)

>Ist das ein Problem für die Implementation?

Nein. Aber einige Siganle sind nicht iitialisiert und sind somit U 
(undefined). Eine Operation mit U ergibt immer U, logisch. Darüber 
meckert Modelsim.

>Wenn ja - wie können die Warnings vermieden werden?

Signale initialisieren. Entweder mit Reset im Design, oder per Zuweisung 
im Script im Modelsim (Force Modus deposite).

MFG
Falk
Gast #671153
Lesenswert?

Nö, sollte kein Prob sein, du hast halt irgendwo eine 
Konverteierung/Operation std_gic_vector auf mit integer. dein vektor 
kann neben '0' '1' auch 'X' 'u' etc aufweisen, die kann er nicht als 
zahlen interpretieren und ersetzt sie durch '0'. Sowas passiert wenn man 
für die Simu die busse nicht initialisiert (als signal fgfg: 
std_logic_vector(7 downto 0) := (others => '0'); (das mit := ist die 
initalisierung).
OP #671176
Lesenswert?

Dann müsste ich also in meinem Modell die Signale wie folgt deklarieren?
1
    -- clock signals from encoder detect
2
    signal FWD_CLK_sig          : STD_LOGIC := '0';
3
    signal BWD_CLK_sig          : STD_LOGIC := '0';
4

5
    -- count signals after prescaler
6
    signal STEP_UP_sig          : STD_LOGIC := '0';
7
    signal STEP_DOWN_sig        : STD_LOGIC := '0';
8
    
9
    -- step counter
10
    signal STEP_COUNT_sig       : STD_LOGIC_VECTOR(13 downto 0) := (others => '0');
11
    signal COUNT_PRESCALER_sig  : integer range 0 to 255; -- 2^8-1 := 0;

Interessant... man lernt wohl nie aus ;-).

Ist es denn sinnvoll, signals generell einen Initialwert zuzuweisen oder 
kann das zu Konflikten führen?

Gruss, Martin
OP #671943
Lesenswert?

Sodele, in der Sache mit den ModelSIM Warnings bin ich nun ein paar 
Schritte weiter gekommen. Bis auf ein Modul habe ich alle Warnings 
wegbekommen. Das "böse" Modul hat folgende Schnittstelle:
1
entity CAPTURELogic is
2
    port (
3
        -- System
4
        INT_CLK                             : in    STD_LOGIC;
5
        INT_RESET                           : in    STD_LOGIC;
6
        -- CAPTURE Enable
7
        CAPTURE_ENABLE                      : in    STD_LOGIC;
8
        -- CAPTURE Window Enable
9
        CAPTURE_WIN_ENABLE                  : in    STD_LOGIC;
10
        -- CAPTURE Window
11
        CAPTURE_WINDOW_START                : in    STD_LOGIC_VECTOR(31 downto 0);
12
        CAPTURE_WINDOW_END                  : in    STD_LOGIC_VECTOR(31 downto 0);
13
        -- CAPTURE Input
14
        CAPTURE_INPUT_impuls                : in    STD_LOGIC;
15
        -- Counter Input
16
        STEP_COUNT                          : in    STD_LOGIC_VECTOR(31 downto 0);
17
        -- CAPTURE Request          
18
        CAPTURE_REQUEST                     : out   STD_LOGIC;
19
        CAPTURE_REQUEST_reset               : in    STD_LOGIC;
20
        -- CAPTURE Wert
21
        CAPTURE_VALUE                       : out   STD_LOGIC_VECTOR(31 downto 0);
22
        -- CAPTURE Count
23
        CAPTURE_COUNT                       : out   STD_LOGIC_VECTOR(7 downto 0);
24
        CAPTURE_COUNT_reset                 : in    STD_LOGIC
25
    );
26
end CAPTURELogic;
Innerhalb des Moduls werden diese Signale definiert:
1
    -- signals
2
    signal CAPTURE_impuls                   : STD_LOGIC;
3
    signal CAPTURE_REQUEST_save             : STD_LOGIC;
4
    signal WINDOW_INVERS_sig                : STD_LOGIC;
5
    signal IN_WINDOW_NONINV_sig             : STD_LOGIC;
6
    signal IN_WINDOW_INV_sig                : STD_LOGIC;
7
    signal IN_WINDOW_sig                    : STD_LOGIC;
8
    signal CAPTURE_OVERALL_ENABLE_sig       : STD_LOGIC;
9
    signal CAPTURE_ALLOW_WINDOW_sig         : STD_LOGIC;
10
    signal CAPTURE_ENABLE_sig               : STD_LOGIC;
11
    -- step counter
12
    signal CAPTURE_COUNT_uv                 : unsigned(7 downto 0);
13
    -- Capture Wert
14
    signal CAPTURE_VALUE_sig                : STD_LOGIC_VECTOR(31 downto 0);
Gemäss dem Waveform Screenshot im Anhang sind alle Signale sauber 
definiert, schon ganz vom Anfang an. ModelSim gibt aber trotzdem einige 
solche Warnungen aus:
1
#    Time: 0 ps  Iteration: 0  Instance: /kusb_io_flex_testbench_readertest_r1a_mode0/mykusb_io_flex/mycapture/mycapturelogicfall
2
# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).
3
#    Time: 0 ps  Iteration: 0  Instance: /kusb_io_flex_testbench_readertest_r1a_mode0/mykusb_io_flex/mycapture/mycapturelogicrise
4
# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).
Woher könnten diese Warnungen jetzt noch stammen?
Die einzige
Angehängte Dateien:
#672031
Lesenswert?

@ Martin Kohler (mkohler)

>Gemäss dem Waveform Screenshot im Anhang sind alle Signale sauber
>definiert, schon ganz vom Anfang an. ModelSim gibt aber trotzdem einige
>solche Warnungen aus:

>Woher könnten diese Warnungen jetzt noch stammen?

Sind sicher einige interne Signale im Modul, die du nit initialisiert 
hast.

MfG
Falk
OP #672042
Lesenswert?

Und welche sollten das noch sein?
Im Waveform Screenshot sind alle Signale der Entity sowie alle intern 
definierten signals aufgeführt. Da ist nichts undefiniert.

In den internen processes gibt es auch keine Variablen oder ähnliches, 
da wird nur mit den bestehenden signals gearbeitet.

Gruss, Martin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren