Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: импорт списка состояний из package
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
L47
Здравствуйте, подскажите пожалуйста:
Возможно ли импортировать из package(Systemverilog) список состояний enum одним разом?

Код
package pck;
enum int unsigned {
    a,
    b,
    c
    } state_t;
endpackage

module m1
    import
    pck:: state_t,
    pck:: a, //как исключить эту запись?
    pck:: b, //как исключить эту запись?
    pck:: c; //как исключить эту запись?
    (
    input logic clk
    );
state_t state;
always_ff@(posedge clk)
    begin
    case (state)
        a:out <= "A";
        b:out <= "B";
        c:out <= "C";
        default: out <= "D";
        endcase
    end

endmodule


Причина: можно использовать запись в виде "import:*;" но в этом случае если модуль большой то не сразу понятно какие параметры задействованы, поэтому хотелось бы импортировать поименно, но с enum выходит вышеуказанная проблема.
L47
видимо это сделать не возможно, решил пойти путем создания нескольких независимых package с полным импортом через "import package_name::*;"
Golikov A.
а import package_name::enum_name::* не работает?
L47
Цитата
а import package_name::enum_name::* не работает?

Нет, не работает:
Цитата
package_for_fsm.sv(56): near "::": syntax error, unexpected ::, expecting ';' or ','


Код
`timescale 1ns / 1ps
module top
        (
        );
//===========================================/
//GEN
//===========================================/
logic clk = 'b0;
always #10 clk = ~clk;
//===========================================/
//TEST UNIT
//===========================================/
logic [7:0] out;
m1 m1_inst(
    .clk(clk),
    .out(out)    
    );  
endmodule

//===========================================/
//PACKAGE
//===========================================/
package pck;
typedef enum int unsigned {
    a,
    b,
    c
    } state_t;
endpackage

//===========================================/
//TEST_MODULE
//===========================================/
module m1
    import
//   pck:: state_t,
    pck:: state_t::*;
    
/*     pck:: a, //как исключить эту запись?
    pck:: b, //как исключить эту запись?
    pck:: c; //как исключить эту запись? */
    (
    input logic clk,
    output logic [7:0] out = 'b0
    );
state_t state;

always_ff@(posedge clk)
    begin
    case (state)
        a:
            begin
            state <= b;
            out <= "A";
            end
        b:
            begin
            state <= c;
            out <= "B";
            end
        c:
            begin
            state <= a;
            out <= "C";
            end
        default:
            begin
            state <= a;
            out <= "D";
            end
        endcase
    end

endmodule
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.