پرش به


تصویر

مشکل من در شروع کار با vivado hls


  • لطفا وارد حساب کاربری خود شوید تا بتوانید پاسخ دهید
5 پاسخ برای این موضوع

#1 M.Sadeghi

M.Sadeghi

    کاربر عادی

  • مدیریت انجمن
  • 12 ارسال

ارسالی 18 April 2016 - 06:34 PM

سلام به همه دوستان گل و اساتید گرامی

واسه شروع کار تو زمینه HLS یه کد ساده(تابع) به زبان ++C  تو محیط vivado hls  نوشتم که فقط دوتا عدد رو با همدیگه جمع میکنه .

تابعی که نوشتم اینه :

void su (int a,int b, int *c){

	*c = a+b ;
}

و به عنوان testbench  هم کد زیرو نوشتم و کامپایل کردم و بدون خطا واسم اجرا شد و نتیجه همون چیزی بود که انتظار داشتم.

#include <stdio.h>

void su (int a,int b,int *c);

int main (){
	int m=7;
	int n=6;
	int result;

	su(m,n,&result);
	printf("sum of %d and %d is :  %d \n",m,n,result);

	m=48;
	n=56;
	su(m,n,&result);
	printf("sum of %d and %d is :  %d \n",m,n,result);

	return 0;
}

بعد از طی کردن این مراحل رفتم سراغ سنتز , سنتز هم انجام شد و کد VHDL واسه من تولید شد.(طبق دونسته های اندک من کدی که تولید میشه خوانایی زیادی نداره که طبیعی هم هست )

حالا تصمیم دارم این کدو توی محیط ISE سنتز کنم یا مثلا به عنوان یه کامپوننت توی یه طراحی استفاده کنم, اما کلی error رنگارنگ syntax داره :(

و چون از بعضی از قسمتای کدش سردرنمیارم نمیتونم دستکاریش کنم !

همیشه کدای تولیدی همینجوریه ؟ الان واسه اینکه از این کد استفاده کنم چه کنم !؟

اساتید به دادم برسن !  اولین تجربه من به vivado HLS هستش

اینم از کد تولید شده :

-- ==============================================================
-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
-- Version: 2012.2
-- Copyright (C) 2012 Xilinx Inc. All rights reserved.
-- 
-- ===========================================================

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

library work;
use work.AESL_components.all;

entity su is
port (
    a : IN STD_LOGIC_VECTOR (31 downto 0);
    b : IN STD_LOGIC_VECTOR (31 downto 0);
    c : OUT STD_LOGIC_VECTOR (31 downto 0);
    c_ap_vld : OUT STD_LOGIC );
end;


architecture behav of su is 
    attribute CORE_GENERATION_INFO : STRING;
    attribute CORE_GENERATION_INFO of behav : architecture is
    "su_inst,su,{component_name=su_inst,HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xc6slx9tqg144-2,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.490000,HLS_SYN_LAT=0,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=0,HLS_SYN_LUT=32}";
    constant ap_true : BOOLEAN := true;
    constant ap_const_logic_0 : STD_LOGIC := '0';
    constant ap_const_logic_1 : STD_LOGIC := '1';



begin


    c <= esl_add(b, a);
    c_ap_vld <= ap_const_logic_1;
end behav;

پیشاپیش از کمکتون ممنونم :)

 



#2 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 18 April 2016 - 07:03 PM

سلام

من عین همین کد شما را با vivado_hls 2015 سنتز کردم و نتیجه ی متفاوتی نسبت به شما گرفتم. کد VHDL ی که من گرفتم اینه:

-- ==============================================================
-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
-- Version: 2015.1
-- Copyright (C) 2015 Xilinx Inc. All rights reserved.
-- 
-- ===========================================================

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

entity su is
port (
    ap_start : IN STD_LOGIC;
    ap_done : OUT STD_LOGIC;
    ap_idle : OUT STD_LOGIC;
    ap_ready : OUT STD_LOGIC;
    a : IN STD_LOGIC_VECTOR (31 downto 0);
    b : IN STD_LOGIC_VECTOR (31 downto 0);
    c : OUT STD_LOGIC_VECTOR (31 downto 0);
    c_ap_vld : OUT STD_LOGIC );
end;


architecture behav of su is 
    attribute CORE_GENERATION_INFO : STRING;
    attribute CORE_GENERATION_INFO of behav : architecture is
    "su,hls_ip_2015_1,{HLS_INPUT_TYPE=c,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xc6slx9tqg144-2,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.490000,HLS_SYN_LAT=0,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=0,HLS_SYN_LUT=32}";
    constant ap_const_logic_1 : STD_LOGIC := '1';
    constant ap_const_logic_0 : STD_LOGIC := '0';



begin



    ap_done <= ap_start;
    ap_idle <= ap_const_logic_1;
    ap_ready <= ap_start;
    c <= std_logic_vector(unsigned(b) + unsigned(a));

    -- c_ap_vld assign process. --
    c_ap_vld_assign_proc : process(ap_start)
    begin
        if (not((ap_start = ap_const_logic_0))) then 
            c_ap_vld <= ap_const_logic_1;
        else 
            c_ap_vld <= ap_const_logic_0;
        end if; 
    end process;

end behav;

و نتیجه ی شبیه سازی در Isim (پس از سنتز):
h7gu_adder_hls.jpg


  • M.Sadeghi این پست را پسندیده است

#3 M.Sadeghi

M.Sadeghi

    کاربر عادی

  • مدیریت انجمن
  • 12 ارسال

ارسالی 18 April 2016 - 08:24 PM

ممنون از اینکه زحمت کشیدین و تست کردین

متوجه اشکالم شدم , کدی که ورژن 2012 به من میده همین کدیه که تو پست اول گذاشتم اما همراه کد یه پکیج هم با اسم AESL_components  بهم میده که من دقت نکرده بودم !

با add کردن این پکیج به پروژه ISE مشکل حل شد !

حالا سوالم اینه که به نظرتون واسه ادامه کار ورژنو عوض کنم ؟؟

چون طبق چیزایی که خوندم , انتظار داشتم قسمت entity کد من مثل کدی که شما گذاشتین باشه ! یه سری سیگنالای کنترلی بیشتری نسبت به کد من داشته باشه !

و اینکه کد شما نیاز به پکیج خاصی نداره و فقط کتابخونه های استاندارد Add شدن



#4 mahmoud

mahmoud

    Administrator

  • مدیریت انجمن
  • 100 ارسال

ارسالی 19 April 2016 - 02:20 AM

ممنون از اینکه زحمت کشیدین و تست کردین

متوجه اشکالم شدم , کدی که ورژن 2012 به من میده همین کدیه که تو پست اول گذاشتم اما همراه کد یه پکیج هم با اسم AESL_components  بهم میده که من دقت نکرده بودم !

با add کردن این پکیج به پروژه ISE مشکل حل شد !

حالا سوالم اینه که به نظرتون واسه ادامه کار ورژنو عوض کنم ؟؟

چون طبق چیزایی که خوندم , انتظار داشتم قسمت entity کد من مثل کدی که شما گذاشتین باشه ! یه سری سیگنالای کنترلی بیشتری نسبت به کد من داشته باشه !

و اینکه کد شما نیاز به پکیج خاصی نداره و فقط کتابخونه های استاندارد Add شدن

نظر من اینه که نسخه تون رو ارتقا بدین. نسخه ی شما خیلی قدیمیه.



#5 fazel459

fazel459

    کاربر عادی

  • کاربر عادی
  • ستارهستاره
  • 22 ارسال

ارسالی 29 September 2016 - 04:10 PM

سلام

براي HLS فقط Vivado استفاده ميشه يا نرم افزار ديگه ايي هم هست؟



#6 mahdichi

mahdichi

    newbie

  • مدیریت انجمن
  • 3 ارسال

ارسالی 01 October 2016 - 07:09 PM

سلام

براي HLS فقط Vivado استفاده ميشه يا نرم افزار ديگه ايي هم هست؟

با سلام. 

لینک زیر را مشاهده کنید. لیست کلیه ابزارهای سنتز سطح بالا را می تونید ببینید.

https://en.wikipedia...level_synthesis


  • mahmoud این پست را پسندیده است




0 کاربر در حال خواندن این موضوع است

0 کاربر، 0 مهمان و 0 عضو مخفی