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

 
 
> Проблема с синтезом. Память под Synplify 8.2.1
stalko
сообщение Nov 28 2005, 17:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Уже крыша едет!!
В двух словах: есть набор регистров 16х256 "на улицу" + двухпортовая память для передачи данных другому модулю + вход от такой же памяти того самого модуля... Память адресуется регистрами 32 и 33, регистры с автоинкрементом. Все остальное неважно, далее код в студию...
`timescale 1ms / 1us
////////////////////////////////////////////////////////////////////////////////
// Create Date: 10:12:22 07/27/05
// Module Name: REG_ARM_DUAL_PORT
////////////////////////////////////////////////////////////////////////////////
module REG_ARM_DUAL_PORT(A, CS_FPGA, nWR, nRD, NLB, NUB, HFCC, HFCD, DIN, DOUT, TxHALEn,
RECEIVE, TOUT, MARKER, HAL_HDWL, NSS_MODE, GCLK, SHARE_A, SHARE_D, TOSHARE_A,
TOSHARE_D, CS4_MEM, CS5_MEM);
parameter DEEP=256;
parameter MEM_DEEP=1024;
input [7:0] A;
input CS_FPGA;
input nWR;
input nRD;
input NLB;
input NUB;
input HFCC;
input [7:0] HFCD;
input [15:0] DIN;
input GCLK;
input [10:0] SHARE_A;
input [15:0] TOSHARE_D;
input CS4_MEM;
input CS5_MEM;
output [15:0] DOUT;
output TxHALEn;
output RECEIVE;
output [15:0] TOUT;
output MARKER;
output HAL_HDWL;
output NSS_MODE;
output [7:0] SHARE_D;
output [10:0] TOSHARE_A;
// Собственно регистры
reg [15:0] RARM [DEEP-1:0]/* synthesis syn_ramstyle="registers"*/;
reg [7:0] MEM [MEM_DEEP-1:0]/* synthesis syn_ramstyle="select_ram"*/;
reg [15:0] R3;
reg MARKER;
wire nWR_EN;
wire [10:0] A_MEM;
reg nWR_MEM_C, nRD_MEM_C;

assign TxHALEn = RARM[0][0];
assign NSS_MODE = RARM[0][1];
assign RECEIVE = RARM[1][0];
assign HAL_HDWL = RARM[1][2];
assign TOUT=RARM[2];
assign nWR_EN=nWR | CS_FPGA;
assign TOSHARE_A=RARM[33];
assign nWR_MEM=nWR|CS4_MEM;
assign nRD_MEM=nRD|CS5_MEM;
assign A_MEM=RARM[32];
assign A_MEM1=RARM[33];

assign SHARE_D=MEM[SHARE_A];

// Регистр RARM3 - вход HAL Freq Control
always @(posedge HFCC)
R3={8'b0,HFCD};

always @(posedge GCLK)
begin
// Маркер
if ((nWR_EN==0)&&(A==8'h02)&&(DIN!=8'h00))
MARKER=!MARKER;
// Локальные регистры
if (nWR_EN==0) //negedge nWR_EN
RARM[A]=DIN;
// Память обмена (запись)
if (nWR_MEM==0)
{MEM[A_MEM],MEM[A_MEM+1]}=DIN;
// Автоинкремент указателей
if ({nWR_MEM,nWR_MEM_C}==2'b10) //posedge nWR_MEM
RARM[32]=A_MEM+2;
nWR_MEM_C=nWR_MEM;
if ({nRD_MEM,nRD_MEM_C}==2'b10) //posedge nRD_MEM
RARM[33]=A_MEM1+2;
nRD_MEM_C=nRD_MEM;
end

assign DOUT=((CS5_MEM==0)?TOSHARE_D:((A==3)?R3:RARM[A]));

endmodule

Так вот: при синтезе Synplify 8.2.1 просто зависает (возможно, она и не висит в прямом смысле этого слова, но я так и не дождался)...
Подобная ситуация и с тем самым "другим модулем", он написан немного по другому. Он по логу проходит чуть дальше и выдает в .srr чудную ошибку:
Latch generated from always block for signal MEM_1018_[7:0], probably caused by a missing assignment in an if or case stmt. И так для каждого бита памяти...
Я, честно, так и не понял ее смысла... Но синтезирует его... вот только Latch-ей после этого в проекте столько, что они в ПЛИС не лезут...
Ответы сводящиеся только к "я бы сделал совсем по другому" просьба не писать, либо уж пишите, как бы Вы сделали...
Заранее спасибо.
P.S. Думаю, это у меня ручки кривоваты, а Synplify ни при чем.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- stalko   Проблема с синтезом. Память под Synplify 8.2.1   Nov 28 2005, 17:19
- - tegumay   я с Simplify не работал но попробуйте расставить b...   Nov 28 2005, 17:31
- - Leka   В модуле always@(posedge GCLK) куча "=" ...   Nov 28 2005, 19:24
|- - stalko   Цитата(tegumay @ Nov 28 2005, 20:31) я с ...   Nov 28 2005, 20:27
- - Leka   всё запихать в один большой олвайз желательно прим...   Nov 28 2005, 22:14
- - Leka   MEM[A_MEM]=DIN[15:8]; MEM[A_MEM+1]=DIN[7:0]; Это ...   Nov 28 2005, 22:28
|- - stalko   В соответствии с советами и собственным домыслием ...   Nov 29 2005, 08:30
|- - des00   Цитата(stalko @ Nov 29 2005, 03:30) и ник...   Nov 29 2005, 08:47
|- - stalko   Цитата(des00 @ Nov 29 2005, 11:47) Цитата...   Nov 29 2005, 13:02
|- - des00   Цитата(stalko @ Nov 29 2005, 08:02) а ему...   Nov 29 2005, 13:46
|- - stalko   Цитата(des00 @ Nov 29 2005, 16:46) он же ...   Nov 29 2005, 14:04
|- - des00   Цитата(stalko @ Nov 29 2005, 09:04) Или В...   Nov 29 2005, 14:19
|- - stalko   Цитата(des00 @ Nov 29 2005, 17:19) ИМХО a...   Nov 29 2005, 19:21
||- - andrew_b   Цитата(stalko @ Nov 29 2005, 22:21) Цитат...   Nov 30 2005, 06:42
|- - dxp   Цитата(des00 @ Nov 29 2005, 20:19) Цитата...   Nov 30 2005, 06:44
- - Leka   always @(posedge GCLK) begin ... MEM[A_MEM+1]<=...   Nov 29 2005, 09:39
- - id_gene   ЦитатаRARM[33]<=A_MEM1+2; nWR_MEM_C=nWR_MEM; и ...   Nov 29 2005, 09:56
- - lutik   у Synplify, по крайней мере до v7.7, всегда крыша ...   Nov 29 2005, 11:32
- - id_gene   ЦитатаНо верилог разрешает использование обоих фро...   Nov 29 2005, 14:35


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

 


RSS Текстовая версия Сейчас: 11th July 2025 - 10:29
Рейтинг@Mail.ru


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