Package: gplcver
Version: 2.12a-1.1
Severity: important
Tags: upstream

With the attached files input, it segfaults on:

cver teste-memoria.v

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=pt_BR.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gplcver depends on:
ii  libc6                         2.10.2-6   Embedded GNU C Library: Shared lib

gplcver recommends no packages.

gplcver suggests no packages.

-- no debconf information
`include "memoria.v"

module TesteMemoria;
   reg clock;
   reg ativo;
   reg escrita;
   reg [3:0] endereco;
   wire [31:0] dados;
   reg [31:0] escrever;

   assign dados = ativo && escrita ? escrever : 32'bz;

   initial begin
      $dumpfile("teste-memoria.vcd");
      $dumpvars;

      clock = 0;

      #2 ativo = 1;
      escrita = 1;
      endereco = 0;
      escrever = 1;

      #2 ativo = 0;
      escrita = 0;
      escrever = 8'bz;

      #2 ativo = 1;

      #2 $finish;
   end

   always
     #1 clock = ~clock;

   Memoria memoria(clock, ativo, escrita, endereco, dados);
endmodule // TesteMemoria
module Memoria(clock, ativo, escrita, endereco, dados);
   input clock;

   // "Implementar uma porta de entrada utilizada para sinalização. Essa porta
   // indicará à memória que a mesma deve realizar a operação desejada;"
   input ativo;

   // "Implementar uma porta indicando se o acesso é de leitura ou escrita;"
   input escrita;

   // "Implementar uma porta de endereço de 4 bits;"
   input [3:0] endereco;

   // "Implementar uma porta de dados de 32 bits utilizando inout para
   // compartilhar leitura e escrita;"
   inout [31:0] dados;

   wire clock;
   wire ativo;
   wire escrita;
   wire [3:0] endereco;
   wire [31:0] dados;

   // "512 bytes de memória física em que a palavra é de 4 bytes;"
   //
   // 512 / 4 = 128
   reg [31:0] memoria[127:0];

   assign dados = ativo && !escrita ? memoria[endereco] : 8'bz;

   always @(posedge clock)
     if(ativo && escrita)
       memoria[endereco] <= dados;

endmodule // disco

Reply via email to