Jump to content

    

А кто-нибудь пробовал Synflow ?

We created Cx in 2012 to get rid of the complexity of traditional HDLs. Today, Cx is an open-source language used by engineers and makers who want to efficiently create systems and applications for FPGAs and ASICs. The language has a C-like syntax, it features a strong bit-accurate static typing, and it allows cycle-accurate behavior to be implicitly expressed with structured code. Cx can be compiled into Verilog using the Synflow IDE. It offers the same Quality of Result and performance as HDLs with the simplicity of the C language.

 

Как же я люблю такие фразы.

Share this post


Link to post
Share on other sites

Посмотрел по диагонали. В туторе обратил внимание на результат кодогенерации рассматриваемого примера:

 

   always @(negedge reset_n or posedge clock_PLL) begin    
    if (~reset_n) begin      
    clock_50hz  = 0;      
    count  = 0;    
   end else begin      
    if (count == 1000) begin         
      clock_50hz = ~clock_50hz;        
      count = 0;      
    end else begin         
      count = count + 1;      
    end    
   end  
  end  

По факту always @(posedge clk) - блок, генерирующий флопы. Но присваивания внутри блока все блокирующие (источник неприятных сюрпризов). Что это? Недосмотр или некомпетентность? Сие резко подрывает доверие ко всей этой теме.

 

Имхо, это похоже на стартап, созданный в  надежде, что его заметит и купит кто-нить из крупных игроков (как обычно, ведь это основная цель подавляющего большинства стартапов).

 

Ну, и по технике, как всегда, ещё один вопрос: как это все увязывать с имеющейся инфраструктурой, например, на этапе моделирования в симуляторах. Например, вот есть аппаратный блок, скажем, PCIe, вендор предоставляет IP ядро на HDL. Как это внедрять в этот их флоу, чтобы погонять на симуляторе? Как я понял, у них в системе симулятор не HDL, а какой-то свой, который "в 16 раз быстрее HDL симулятора". Этот вопрос относится ко всем С-подобным языкам, "убийцам" HDL.

 

 

Share this post


Link to post
Share on other sites

Приветствую!

6 hours ago, dxp said:

По факту always @(posedge clk) - блок, генерирующий флопы. Но присваивания внутри блока все блокирующие (источник неприятных сюрпризов). Что это? Недосмотр или некомпетентность? Сие резко подрывает доверие ко всей этой теме

Сами по себе блокирующие присваивания не источник проблем. Тут так же будут генерироваться флопы.  Ну а при синтезе из  высокоуровневых языков так проще конвертировать логику алгоритма. Ведь в концепции оных присвоения значений переменным всегда блокирующие.  

6 hours ago, dxp said:

Имхо, это похоже на стартап, созданный в  надежде, что его заметит и купит кто-нить из крупных игроков (как обычно, ведь это основная цель подавляющего большинства стартапов).

Так и есть. Но и Vivado в свое время был стартапом  граф. оболочки для разработки FPGA :unknw:.  Помню реклама была типа "Honey, ask your son to stop developing for FPGA" и  карапуз  на фоне бука с открытой BD Vivado :biggrin:  -  А теперь  мы все  что те карапузы, ни как не остановимся  ...   

Удачи! Rob.

Share this post


Link to post
Share on other sites
2 часа назад, RobFPGA сказал:

Сами по себе блокирующие присваивания не источник проблем. Тут так же будут генерироваться флопы.

Я сталкивался с проблемами, даже тут тему создавал по этому поводу не так давно . Там именно было, что в task были @(posedge clk) конструкции, а присваивания были блокирующими, и это приводило к проблемам из-за гонок совсем в другом месте - срабатывало на такт раньше (или позже), а происходило это из-за того, что шедулер симулятора выражения с блокирующими присваиваниями обрабатывает в начале цикла, а с неблокирующими - в конце. Очень поганенький был баг.

2 часа назад, RobFPGA сказал:

Ведь в концепции оных присвоения значений переменным всегда блокирующие

Так в этих языках и концепция другая: поток обработки и семантика присваивания иные. И должны быть средства управления тем, во что должно трансформироваться описание с этого языка - в комбинационку или во флопы. И вот тут оно должно работать правильно, иначе это таким инструментом будет тяжело пользоваться.

2 часа назад, RobFPGA сказал:

Так и есть. Но и Vivado в свое время был стартапом  граф. оболочки для разработки FPGA

Оболочка, возможно так (не следил). Но синтез-то, насколько понимаю, всё же родной от Xilinx. А это-то и есть самое главное. Оболочка, кстати, в виваде - кака. В смысле тормознутости глючности. Такого тормоза, как вивадо - поискать. Даже консоль тиклевая - просто консоль - запускается на очень резвом компе несколько секунд. За аналогичная консоль той же квесты поднимается мгновенно.

Share this post


Link to post
Share on other sites

Приветствую!

17 minutes ago, dxp said:

Оболочка, возможно так (не следил). Но синтез-то, насколько понимаю, всё же родной от Xilinx. А это-то и есть самое главное. Оболочка, кстати, в виваде - кака. В смысле тормознутости глючности. Такого тормоза, как вивадо - поискать. Даже консоль тиклевая - просто консоль - запускается на очень резвом компе несколько секунд. За аналогичная консоль той же квесты поднимается мгновенно.

Тормоза это да,  что есть, то есть ... хотя как по наполнению, так и по интеграции оболочка tcl в Vivado мне больше нравится  чем в Qu. 

Ну может допилят  когда-нибудь  - или  если не смогут  заменять на новый стартап :)

Удачи! Rob.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this