Перейти к содержанию

    

импорт списка состояний из package

Здравствуйте, подскажите пожалуйста:

Возможно ли импортировать из 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 выходит вышеуказанная проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

видимо это сделать не возможно, решил пойти путем создания нескольких независимых package с полным импортом через "import package_name::*;"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
а 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация