Рачунарски VLSI системи/Питања — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (→‎SystemVerilog ограничења: +1 zadatak od nepoznatog kolege, +2 od Acka)
м (Još pitalica iz UVM)
Ред 5: Ред 5:
У оваквим задацима, једноставно, је дат SystemVerilog код са ограничењима на неке променљиве, и пита се нешто у вези са вредностима које та променљива може да има и њиховим вероватноћама појављивања.
У оваквим задацима, једноставно, је дат SystemVerilog код са ограничењима на неке променљиве, и пита се нешто у вези са вредностима које та променљива може да има и њиховим вероватноћама појављивања.


=== Задатак 1 ===
=== 1. задатак ===
Које вредности може имати променљива <code>variable</code> из приказане класе <code>Constraints</code>:
Које вредности може имати променљива <code>variable</code> из приказане класе <code>Constraints</code>:
<syntaxhighlight lang="systemverilog">
<syntaxhighlight lang="systemverilog">
Ред 22: Ред 22:
'''Одговор:''' <span class="spoiler" data-solution="text">4,6,7,8,9</span>
'''Одговор:''' <span class="spoiler" data-solution="text">4,6,7,8,9</span>


=== Задатак 2 ===
=== 2. задатак ===
{{делимично решено}}
{{делимично решено}}
Дата је класа <code>Constraints</code>:
Дата је класа <code>Constraints</code>:
Ред 38: Ред 38:
</div>
</div>


=== Задатак 3 ===
=== 3. задатак ===
Које вредности може имати променљива <code>v2</code> из приказане класе <code>Constraints</code>:
Које вредности може имати променљива <code>v2</code> из приказане класе <code>Constraints</code>:
<syntaxhighlight lang="systemverilog">
<syntaxhighlight lang="systemverilog">
Ред 56: Ред 56:
'''Одговор:''' <span class="spoiler" data-solution="text">11,13,15</span>
'''Одговор:''' <span class="spoiler" data-solution="text">11,13,15</span>


=== Задатак 4 ===
=== 4. задатак ===
{{делимично решено}}
{{делимично решено}}
Дата је класа <code>Constraints</code>:
Дата је класа <code>Constraints</code>:
Ред 72: Ред 72:
</div>
</div>


=== Задатак 5 ===
=== 5. задатак ===
{{делимично решено}}
{{делимично решено}}
Дата је класа <code>Constraints</code>:
Дата је класа <code>Constraints</code>:
Ред 91: Ред 91:
У оваквим задацима обично је дат Verilog код одређеног сабирача (једног од типова као што су рађени на предавањима) и питају се ствари у вези са функционисањем тог сабирача.
У оваквим задацима обично је дат Verilog код одређеног сабирача (једног од типова као што су рађени на предавањима) и питају се ствари у вези са функционисањем тог сабирача.


=== Задатак 1 ===
=== 1. задатак ===
У наставку је дата имплементација једног осморазредног сабирача. О ком сабирачу се ради, ако се зна да модул <code>ripple_carry_adder_n</code> представља ''N''-разредни сабирач са серијским преносом, а да модул <code>multiplexer_2_1</code> представља двоулазни мултиплексер ширине ''N'' информационих улаза?
У наставку је дата имплементација једног осморазредног сабирача. О ком сабирачу се ради, ако се зна да модул <code>ripple_carry_adder_n</code> представља ''N''-разредни сабирач са серијским преносом, а да модул <code>multiplexer_2_1</code> представља двоулазни мултиплексер ширине ''N'' информационих улаза?
<syntaxhighlight lang="verilog">
<syntaxhighlight lang="verilog">
Ред 136: Ред 136:
'''Објашњење:''' <span class="spoiler" data-solution="explanation">У коду се види карактеристични "осакаћени мултиплексер" код генерисања преноса <code>carry_3</code> и <code>carry_7</code>.</span>
'''Објашњење:''' <span class="spoiler" data-solution="explanation">У коду се види карактеристични "осакаћени мултиплексер" код генерисања преноса <code>carry_3</code> и <code>carry_7</code>.</span>


=== Задатак 2 ===
=== 2. задатак ===
У наставку је дата непотпуна имплементација четвороразредног сабирача на основу бита преноса (''Carry Select Adder''). Допунити имплементацију, ако се зна да модул <code>ripple_carry_adder_n</code> представља ''N''-разредни сабирач са серијским преносом, а да модул <code>multiplexer_2_1</code> представља двоулазни мултиплексер ширине ''N'' информационих улаза?<sup>[sic]</sup>
У наставку је дата непотпуна имплементација четвороразредног сабирача на основу бита преноса (''Carry Select Adder''). Допунити имплементацију, ако се зна да модул <code>ripple_carry_adder_n</code> представља ''N''-разредни сабирач са серијским преносом, а да модул <code>multiplexer_2_1</code> представља двоулазни мултиплексер ширине ''N'' информационих улаза?<sup>[sic]</sup>
<syntaxhighlight lang="verilog">
<syntaxhighlight lang="verilog">
Ред 169: Ред 169:
У оваквим задацима дат је Verilog код са кашњењима и временски облици излазних сигнала у ''ModelSim'', па се студенти питају да препознају одговарајући временски облик.
У оваквим задацима дат је Verilog код са кашњењима и временски облици излазних сигнала у ''ModelSim'', па се студенти питају да препознају одговарајући временски облик.


=== Задатак 1 ===
=== 1. задатак ===
{{делимично решено}}
{{делимично решено}}
Који временски облик одговара следећем изворном коду:
Који временски облик одговара следећем изворном коду:
Ред 221: Ред 221:
У оваквим задацима дат је Фанел или Барел померач са одређеним карактеристикама, и траже се сви његови међурезултати.
У оваквим задацима дат је Фанел или Барел померач са одређеним карактеристикама, и траже се сви његови међурезултати.


=== Задатак 1 ===
=== 1. задатак ===
Дат је Фанел померач (''Funnel Shifter'') са дванаестобитним улазом и петобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:
Дат је Фанел померач (''Funnel Shifter'') са дванаестобитним улазом и петобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:
<div data-solution="select" data-options="29,16,1A,27,7,14,5A,13,D,B,A7,9">
<div data-solution="select" data-options="29,16,1A,27,7,14,5A,13,D,B,A7,9">
Ред 233: Ред 233:
Све вредности су написане у хексадецималном бројном систему.
Све вредности су написане у хексадецималном бројном систему.


=== Задатак 2 ===
=== 2. задатак ===
{{делимично решено}}
{{делимично решено}}
Дат је Барел померач (''Barrel Shifter'') са осмобитним улазом и осмобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:
Дат је Барел померач (''Barrel Shifter'') са осмобитним улазом и осмобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:
Ред 249: Ред 249:
У оваквим задацима дат је код из примера верификације без коришћења UVM стандарда са вежби и пита се шта се тачно дешава у коду и зашто.
У оваквим задацима дат је код из примера верификације без коришћења UVM стандарда са вежби и пита се шта се тачно дешава у коду и зашто.


=== Задатак 1 ===
=== 1. задатак ===
У наставку је дат део кода ''Driver''-a.
У наставку је дат део кода ''Driver''-a.
<syntaxhighlight lang="systemverilog">
<syntaxhighlight lang="systemverilog">
Ред 282: Ред 282:
'''Објашњење:''' <span class="spoiler" data-solution="explanation">Први пример са вежби. Генератор чека на овај догађај како не би генерисао више предмета него што драјвер може да конзумира.</span>
'''Објашњење:''' <span class="spoiler" data-solution="explanation">Први пример са вежби. Генератор чека на овај догађај како не би генерисао више предмета него што драјвер може да конзумира.</span>


=== Задатак 2 ===
=== 2. задатак ===
У наставку је дат део кода ''Driver''-a.
У наставку је дат део кода ''Driver''-a.
<syntaxhighlight lang="systemverilog">
<syntaxhighlight lang="systemverilog">
Ред 312: Ред 312:
# ''Monitor''
# ''Monitor''
# ''Scoreboard''
# ''Scoreboard''
</div>
== UVM ==
Ова питања се обично односе на било шта из UVM стандарда.
=== 1. задатак ===
Које класе наслеђују класу <code>uvm_transaction</code>?
<div class="abc-list" data-solution="multiple">
# <span class="solution"><code>uvm_sequence_item</code></span>
# <code>uvm_driver</code>
# <code>uvm_monitor</code>
# <code>uvm_sequencer</code>
# <code>uvm_test</code>
# <span class="solution"><code>uvm_sequence</code></span>
</div>
=== 2. задатак ===
Које фазе кроз које пролазе UVM компоненте се реализују као ''task'' уместо као функције?
<div class="abc-list" data-solution="multiple">
# build
# connect
# end of elaboration
# start of simulation
# <span class="solution">run</span>
# extract
# check
# report
</div>
</div>


[[Категорија:Рачунарски VLSI системи]]
[[Категорија:Рачунарски VLSI системи]]
[[Категорија:Рокови]]
[[Категорија:Рокови]]

Верзија на датум 11. фебруар 2023. у 16:45

Питања на теоријском делу испита се, слично као на РМ1, дохватају из корпуса питања и нису свим студентима иста, али долазе из сличних области. Испод су излистани неки задаци по категоријама питања.

SystemVerilog ограничења

У оваквим задацима, једноставно, је дат SystemVerilog код са ограничењима на неке променљиве, и пита се нешто у вези са вредностима које та променљива може да има и њиховим вероватноћама појављивања.

1. задатак

Које вредности може имати променљива variable из приказане класе Constraints:

class Constraints;
    rand bit [3:0] variable;

    constraint c1 { variable <= 4'd9; }
    constraint c2 { variable inside {[4:14]}; }
    constraint c3 { ! (variable inside {4'h0, 4'h5}); }
endclass

Могуће вредности, сортиране од најмање ка највећој, у децималном бројном систему, раздвојене запетом без пратећег размака, навести као одговор.

Напомена: Приказ очекиваног формата одговора за следеће произвољно одабране вредности 15, 2, 7 и 10 јесте:

2,7,10,15

Одговор: 4,6,7,8,9

2. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Дата је класа Constraints:

class Constraints;
    rand bit [2:0] variable;

    constraint distribution { variable dist { 0:/20, 1:/30, [2:6]:/40, 7:/10 }; }
endclass

Која је вероватноћа да променљива variable приликом генерисања псеудослучајне вредности добије вредност 4? Вероватноћу представити као разломак у којем су бројилац и именилац узајамно прости бројеви.

  • Бројилац: нерешено
  • Именилац: нерешено

3. задатак

Које вредности може имати променљива v2 из приказане класе Constraints:

class Constraints;
    randc bit [3:0] v1;
    randc bit [3:0] v2;

    constraint c1 { v1 > 4'b0100; }
    constraint c2 { ! (v1 inside {[4'h8:4'hF]}); }
    constraint c3 { v2 == v1 * 2 + 1; }
endclass

Могуће вредности, сортиране од најмање ка највећој, у децималном бројном систему, раздвојене запетом без пратећег размака, навести као одговор.

Напомена: Приказ очекиваног формата одговора за следеће произвољно одабране вредности 15, 2, 7 и 10 јесте:

2,7,10,15

Одговор: 11,13,15

4. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Дата је класа Constraints:

class Constraints;
    rand bit [2:0] variable;

    constraint distribution { variable dist { 0:/20, 1:/30, [2:6]:/20, 7:/30 }; }
endclass

Која је вероватноћа да променљива variable приликом генерисања псеудослучајне вредности добије вредност 4? Вероватноћу представити као разломак у којем су бројилац и именилац узајамно прости бројеви.

  • Бројилац: нерешено
  • Именилац: нерешено

5. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Дата је класа Constraints:

class Constraints;
    rand bit [2:0] variable;

    constraint distribution { variable dist { 0:/20, 1:/30, [2:6]:=20, 7:/30 }; }
endclass

Која је вероватноћа да променљива variable приликом генерисања псеудослучајне вредности добије вредност 4? Вероватноћу представити као разломак у којем су бројилац и именилац узајамно прости бројеви.

  • Бројилац: нерешено
  • Именилац: нерешено

Сабирачи

У оваквим задацима обично је дат Verilog код одређеног сабирача (једног од типова као што су рађени на предавањима) и питају се ствари у вези са функционисањем тог сабирача.

1. задатак

У наставку је дата имплементација једног осморазредног сабирача. О ком сабирачу се ради, ако се зна да модул ripple_carry_adder_n представља N-разредни сабирач са серијским преносом, а да модул multiplexer_2_1 представља двоулазни мултиплексер ширине N информационих улаза?

module adder_8 (
    input [7:0] a, b,
    input carry_in,
    output [7:0] sum,
    output carry_out
);

    wire carry_3_0, carry_3_1, carry_3;
    wire [3:0] sum_low_0, sum_low_1, sum_low;

    ripple_carry_adder_n #(4) rca_1 (a[3:0], b[3:0], 1'b0, sum_low_0, carry_3_0);
    ripple_carry_adder_n #(4) rca_2 (a[3:0], b[3:0], 1'b1, sum_low_1, carry_3_1);

    multiplexer_2_1 #(4) mpx_1 (sum_low_0, sum_low_1, carry_in, sum_low);

    assign carry_3 = (carry_in & carry_3_1) | carry_3_0;

    wire carry_7_0, carry_7_1, carry_7;
    wire [3:0] sum_high_0, sum_high_1, sum_high;

    ripple_carry_adder_n #(4) rca_3 (a[7:4], b[7:4], 1'b0, sum_high_0, carry_7_0);
    ripple_carry_adder_n #(4) rca_4 (a[7:4], b[7:4], 1'b1, sum_high_1, carry_7_1);

    multiplexer_2_1 #(4) mpx_2 (sum_high_0, sum_high_1, carry_3, sum_high);

    assign carry_7 = carry_7_0 | (carry_3_0 & carry_7_1) | (carry_in & carry_3_1 & carry_7_1);

    assign sum = {sum_high, sum_low};
    assign carry_out = carry_7;

endmodule
  1. Условни сабирач (Conditional Sum Adder)
  2. Сабирач са серијским преносом (Ripple Carry Adder)
  3. Сабирач са чувањем преноса (Carry Save Adder)
  4. Сабирач на основу бита преноса (Carry Select Adder)
  5. Сабирач са паралелним преносом (Carry Lookahead Adder)
  6. Потпуни сабирач (Full Adder)

Објашњење: У коду се види карактеристични "осакаћени мултиплексер" код генерисања преноса carry_3 и carry_7.

2. задатак

У наставку је дата непотпуна имплементација четвороразредног сабирача на основу бита преноса (Carry Select Adder). Допунити имплементацију, ако се зна да модул ripple_carry_adder_n представља N-разредни сабирач са серијским преносом, а да модул multiplexer_2_1 представља двоулазни мултиплексер ширине N информационих улаза?[sic]

module carry_select_adder_4 (
    input [3:0] a, b,
    input carry_in,
    output [3:0] sum,
    output carry_out
);

    wire carry_3_0, carry_3_1;
    wire [3:0] sum_0, sum_1;

    ripple_carry_adder_n #(4) rca_1 (a[3:0], b[3:0], БЕЛИНА_1, sum_0, БЕЛИНА_2);
    ripple_carry_adder_n #(4) rca_2 (a[3:0], b[3:0], БЕЛИНА_3, sum_1, БЕЛИНА_4);

    multiplexer_2_1 #(4) mpx_1 (sum_0, sum_1, carry_in, sum);

    assign carry_out = (carry_in & carry_3_1) | carry_3_0;

endmodule
  1. Белина 1: 1'b0
  2. Белина 2: carry_3_0
  3. Белина 3: 1'b1
  4. Белина 4: carry_3_1

Објашњење: Ово је само друга варијанта задатка изнад. Једном сабирачу се даје да рачуна као да је улазни пренос 0, а другом да је улазни пренос 1, па се њихови резултати смештају у одговарајуће сигнале.

Временски облици

У оваквим задацима дат је Verilog код са кашњењима и временски облици излазних сигнала у ModelSim, па се студенти питају да препознају одговарајући временски облик.

1. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Који временски облик одговара следећем изворном коду:

module delay_module_3 (
    out1, out2, a, b, c, x, y, z
);

    output reg out1, out2;
    input a, b, c, x, y, z;
    wire e, f, g;

    always @(posedge a) out1 = #1 b & c;
    always @(negedge a) out1 = #1 b | ~c;

    always @(posedge x) out2 = #1 y ^ z;
    always @(negedge x) out2 = #1 ~y;

endmodule

module top_display;

    reg a, b, c, x, y, z;
    wire o1, o2;
    delay_module_3 d3(o1, o2, a, b, c, x, y, z);

    initial begin
        a = 1'b0; b = 1'b0; c = 1'b0; x = 1'b0; y = 1'b0; z = 1'b0;
        #1 b = 1'b1;
        #2 a = 1'b1; y = 1'b1;
        #0 c = 1'b1;
        #2 x = 1'b1;
        #2 a = 1'b0;
        #1 b = 1'b0;
        #3 x = 1'b0;
        #0 y = 1'b0;
        #0 $finish;
    end

endmodule
  1. VLSI zadaci vremenski oblik 9.jpg
  2. VLSI zadaci vremenski oblik 10.jpg
  3. VLSI zadaci vremenski oblik 11.jpg
  4. VLSI zadaci vremenski oblik 12.jpg
  5. Ниједан од понуђених временских облика.

Померачи

У оваквим задацима дат је Фанел или Барел померач са одређеним карактеристикама, и траже се сви његови међурезултати.

1. задатак

Дат је Фанел померач (Funnel Shifter) са дванаестобитним улазом и петобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:

  • Улазни податак: 5A7
  • Контролни сигнал (број померања удесно): 4
  • Први корак: 5A
  • Други корак: 5A
  • Трећи корак: 1A
  • Излазни податак: 1A

Све вредности су написане у хексадецималном бројном систему.

2. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Дат је Барел померач (Barrel Shifter) са осмобитним улазом и осмобитним излазом. Допунити вредности добијене у сваком од корака овог померача као и вредност излзаног податка за следеће улазне вредности:

  • Улазни податак: 79
  • Контролни сигнал (број померања удесно): 7
  • Први корак: нерешено
  • Други корак: нерешено
  • Трећи корак: нерешено
  • Излазни податак: нерешено

Све вредности су написане у хексадецималном бројном систему.

Верификација без UVM

У оваквим задацима дат је код из примера верификације без коришћења UVM стандарда са вежби и пита се шта се тачно дешава у коду и зашто.

1. задатак

У наставку је дат део кода Driver-a.

class Driver;

    virtual reg8_if vif;
    mailbox mbx;
    event done;

    task run();
        @(posedge vif.clk);
        forever begin
            dut_item item;
            mbx.get(item);
            // ...
            @(posedge vif.clk);
            ->done;
        end
    endtask

endclass

Koja класа чека на догађај done који се овде окида?

Напомена: Сматрати да се процес верификације врши без коришћења UVM стандарда.

  1. Driver
  2. Generator
  3. Monitor
  4. Scoreboard

Објашњење: Први пример са вежби. Генератор чека на овај догађај како не би генерисао више предмета него што драјвер може да конзумира.

2. задатак

У наставку је дат део кода Driver-a.

class Driver;

    virtual reg8_if vif;
    mailbox mbx;
    event done;

    task run();
        @(posedge vif.clk);
        forever begin
            dut_item item;
            mbx.get(item);
            // ...
            @(posedge vif.clk);
            ->done;
        end
    endtask

endclass

Koja класа поставља item у mailbox који се овде дохвата?

Напомена: Сматрати да се процес верификације врши без коришћења UVM стандарда.

  1. Driver
  2. Generator
  3. Monitor
  4. Scoreboard

UVM

Ова питања се обично односе на било шта из UVM стандарда.

1. задатак

Које класе наслеђују класу uvm_transaction?

  1. uvm_sequence_item
  2. uvm_driver
  3. uvm_monitor
  4. uvm_sequencer
  5. uvm_test
  6. uvm_sequence

2. задатак

Које фазе кроз које пролазе UVM компоненте се реализују као task уместо као функције?

  1. build
  2. connect
  3. end of elaboration
  4. start of simulation
  5. run
  6. extract
  7. check
  8. report