Quantcast
Channel: Altera Forums
Viewing all 19390 articles
Browse latest View live

Converting MATLAB into VHDL

$
0
0
Hello everyone, I would like to convert a (Transfer function) code from (MATLAB) into (VHDL) code, but I get an error. Is it possible to do this? I have converted an (Adder Circuit) into (VHDL) but I cannot do it for (Transfer function).

Thank You

Can We Specify Cut Timing Path Along With The Code?

$
0
0
Hello,

I have a toggle synchronizer like below and want to exclude the domain crossing register transfer ce_t1 <= ce_toggle from timing analysis. Is there any way to do it automatically, e.g. by a synthesis attribute or a script, without picking up individual code instances after synthesis?

Using Intel FPGA SDK for OpenCL with Quartus Prime Lite Edition

$
0
0
Hi all,
Currently I'm using DE 10 Standard board ( Cyclone V ) for education purpose, and there are two available "bundle" in Altera's OpenCL website ( Quartus Prime Pro and Standard version ) and both of them require license so I wondering if anyone have tested using Intel FPGA SDK for OpenCL with Quartus Prime Lite Edition ? Because Prime Lite also support Cyclone V and that's all I need. Can we manually replace an installation of Quartus Prime Pro with Lite version and keep other things remain ?
Thank you.

Matrix Multiplier IP file issue, call Altera

$
0
0
Using 17.1, tried to invoke Matrix multiplier IP core using Arria-10, and this is what I get: (do I have to buy something?)

Info: matrix1: "Generating: matrix1_altera_fp_matrix_mult_ii_171_22rzifi"
Info: fp_matrix_mult_ii_0: C:/intelfpga/17.1/quartus/../hls/bin/i++ --fp-relaxed --simulator none -o matrix_mult {-march=Arria 10} -I. C:/intelfpga/17.1/ip/altera/dsp/altera_fp_matrix_mult_ii/matrix_mult.cpp
Info: fp_matrix_mult_ii_0: HLS FPGA Parse FAILED.
In file included from C:/intelfpga/17.1/ip/altera/dsp/altera_fp_matrix_mult_ii/matrix_mult.cpp:1:
In file included from C:/intelfpga/17.1/hls/include\HLS/hls.h:11:
C:/intelfpga/17.1/hls/include\HLS/hls_internal.h:9:10: fatal error: 'stdio.h' file not found
#include
^
1 error generated.
Error: fp_matrix_mult_ii_0: IP geneneration failed at file discovery, please tell Altera
Error: couldn't open "C:/Users/User/AppData/Local/Temp/alt7671_6077742390174038189.dir/0003_fp_matrix_mult_ii_0_gen//matrix_mult.prj/components/altera_fp_matrixmult/altera_fp_matrixmult_internal_hw.tcl": no such file or directory
while executing
"discover_files $proxy_file_set $tmp_dir"
(procedure "generate_all" line 15)
invoked from within
"generate_all $output_name QUARTUS_SYNTH"
(procedure "generate_quartus_synth" line 2)
invoked from within
"generate_quartus_synth matrix1_altera_fp_matrix_mult_ii_171_22rzifi"
Info: matrix1: Done "matrix1" with 2 modules, 2 files

Complex loop exit condition

$
0
0
Hello,
I have a very simple code with a few lines, but the outer loop is not pipelined due to "Loop exit condition unresolvable at iteration initiation". Inner loop is pipelined well with II=1. Can anybody suggest any idea?
Thanks

__attribute__ ((task))
kernel void compute_BFS0(
__global const unsigned* restrict ovid_of_edge,
__global const unsigned* restrict start_edge,
__global const unsigned* restrict end_edge,
__global unsigned* restrict node_data
)
{
unsigned ei;
unsigned si;
unsigned ovid;

for (unsigned i = 0; i < 1000; i++ ) // iterates over graph nodes
{
si = start_edge[i]; // sequential read
ei = end_edge[i]; // sequential read

for(unsigned j = si; j < ei; j++) // iterates over node's outgoing edges
{
ovid = ovid_of_edge[j]; // child node. sequential read.
node_data[ovid] = 1000; // random-access write
}
}
} //kernel

[STA] Timing Constraints for synchronizers

$
0
0
Hi All,



What timing constraints should be applied for the synchronizers?



1) false path from a clock pin of the first flop to D-pin of the second/last flop

2) what about the multicycle path? should it be applied for the synchronizers?



Thank you!

write to same cacheline by different kernels

$
0
0
Hello :),
I have a question about possible inconsistency in writing into neighbor global memory addresses by different writers (kernels).
suppose two kernels have write access to same array on global memory, and they write to adjacent addresses which fall into same cache line. Since each kernel has its own copy of cache line and updates its own copy, when the cache lines are updated to the global memory, doesn't this cause inconsistency? is there any cache consistency protocol implemented in Altera OpenCL?
I think one solution is to remove "restrict" keyword or put "volatile" keyword for that variable, which removes variable cache. But with this solution, even if consistency is guaranteed, the performance drops.
Thanks

preloader can not be generated

$
0
0
https://rocketboards.org/foswiki/Doc...RD140Preloader
when i Run makecommand to build the Preloader image

Generating include/generated/asm-offsets.h
tools/scripts/make-asm-offsets arch/arm/cpu/armv7/socfpga/asm-offsets.s include/generated/asm-offsets.h
for dir in tools examples/standalone examples/api arch/arm/cpu/armv7 ; do \
/bin/make -C $dir _depend ; done
make[2]: Entering directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/tools'
make[2]: Nothing to be done for '_depend'.
make[2]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/tools'
make[2]: Entering directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/examples/standalone'
make[2]: Nothing to be done for '_depend'.
make[2]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/examples/standalone'
make[2]: Entering directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/examples/api'
make[2]: Nothing to be done for '_depend'.
make[2]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/examples/api'
make[2]: Entering directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/arch/arm/cpu/armv7'
make[2]: Nothing to be done for '_depend'.
make[2]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/arch/arm/cpu/armv7'
/bin/make -C tools all
make[2]: Entering directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/tools'
x86_64-w64-mingw32-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -idirafter /cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/include -idirafter /cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/include2 -idirafter /cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/include -I /cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/lib/libfdt -I /cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/tools -DCONFIG_SYS_TEXT_BASE=0x01000040 -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -ansi -o mkenvimage.o mkenvimage.c -c
mkenvimage.c:41:22: fatal error:sys/mman.h:No such file or directory
#include <sys/mman.h>
^
Compile interrupt
/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/rules.mk:66: recipe for target 'mkenvimage.o' failed
make[2]: *** [mkenvimage.o] Error 1
make[2]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga/tools'
Makefile:590: recipe for target 'tools' failed
make[1]: *** [tools] Error 2
make[1]: Leaving directory '/cygdrive/d/intelFPGA_lite/FPGA2/software/spl_bsp/uboot-socfpga'
make: *** [uboot-socfpga/spl/u-boot-spl.bin] Error 2

win10 64 1803
how to fix it?

How me rule to search here only combination of words

$
0
0
I want find old messages with "memory leaks OpenCL host" in this forum.
These 4 words in quotes in search form don`t reach to target.
With pluses (memory+leaks+OpenCL+host) is similarly.
Who knows method ?

Memory leaks in OpenCL host

$
0
0
I work in big project with OpenCL part.
In cyclic data processing many calls of OpenCL functions leaves memory leaks, common memory size of program in Program Manager grows and grows, speed is slower and slower...
All our call to malloc() (and other memory allocation routines) have a corresponding free().
I use "Diagnostic Tools" / "Memory Usage" from Visual Studio 2015-2017.
After each cycle in debuggable program I make snapshot, him shows +180, +130,+80 new allocated blocks in comparison with previous snapshot.
If I see all new allocated blocks, all have "Undetermined type" and mainly stored call stack from us to "alteracl_icd.dll" and to "ntdll.dll", size of block 7400 bytes. I try many versions of "OpenCL.lib" / "OpenCL.dll" -- leaks is leaved.
This leaks visual appears in calls to "clFinish()", "clEnqueueReadBuffer()", "clEnqueueNDRangeKernel()", "clEnqueueTask()", "clEnqueueWriteBuffer()" -- all queue functions. Is it possible to free in OpenCL queue work results ?
In our Altera Cyclone V kit this host program also works 3-5 times and stops on memory shortage.
May be it a lack in Altera libs or our bug ?

Is export/import design partitioning supported when HPS is in the partition?

$
0
0
Tools: Quartus Prime Standard v17.1

Target device: Arria10 SoC

Is it possible to import a design partition which contains an hard processing system (HPS)?

For example:
- ProjectA containing a hard processing system (HPS), which is synthesized and Export Design Partition.
- The exported partition is then Import Design Partition into another ProjectB, and this design is built to generate a bitstream.

No warnings/errors are thrown during the exporting or importing of the design partition, so it would seem the this is supported.

However, ProjectB fails fitter with Critical Warnings concerning all the of the HPS I/O, and errors about I/O atom, as shown below:

Critical Warning (18779): Contradicting pin assignments found for the HPS dedicated pins. The HPS IP component placed the HPS pin hps_sdio_D6 at location , but in the top level assignments, the pin is located at PIN_J16
Critical Warning (18780): The Dedicated HPS Pin hps_sdio_D7 Does not have proper location assignment Generated by HPS IP component in QSYS.
Critical Warning (18779): Contradicting pin assignments found for the HPS dedicated pins. The HPS IP component placed the HPS pin hps_sdio_D7 at location , but in the top level assignments, the pin is located at PIN_L18
...

Error (12780): Output buffer atom "qp_proj:soc_inst|platdesgn:soc_inst|platdesgn_alt era_emif_a10_hps_171_3x3sc4q:emif_a10_hps_0|platde sgn_altera_emif_arch_nf_171_nl2ovwa:arch|platdesgn _altera_emif_arch_nf_171_nl2ovwa_top:arch_inst|alt era_emif_arch_nf_bufs:bufs_inst|altera_emif_arch_n f_buf_udir_se_o:gen_mem_act_n.inst[0].b|cal_oct.obuf" has port "SERIESTERMINATIONCONTROL[0]" connected, but does not use calibrated on-chip termination
Error (12780): Output buffer atom "qp_proj:soc_inst|platdesgn:soc_inst|platdesgn_alt era_emif_a10_hps_171_3x3sc4q:emif_a10_hps_0|platde sgn_altera_emif_arch_nf_171_nl2ovwa:arch|platdesgn _altera_emif_arch_nf_171_nl2ovwa_top:arch_inst|alt era_emif_arch_nf_bufs:bufs_inst|altera_emif_arch_n f_buf_udir_se_o:gen_mem_act_n.inst[0].b|cal_oct.obuf" has port "PARALLELTERMINATIONCONTROL[0]" connected, but does not use calibrated on-chip termination
Error (12780): Output buffer atom "qp_proj:soc_inst|platdesgn:soc_inst|platdesgn_alt era_emif_a10_hps_171_3x3sc4q:emif_a10_hps_0|platde sgn_altera_emif_arch_nf_171_nl2ovwa:arch|platdesgn _altera_emif_arch_nf_171_nl2ovwa_top:arch_inst|alt era_emif_arch_nf_bufs:bufs_inst|altera_emif_arch_n f_buf_udir_se_o:gen_mem_act_n.inst[0].b|cal_oct.obuf" has port "SERIESTERMINATIONCONTROL[1]" connected, but does not use calibrated on-chip termination

...

MATLAB to VHDL conversion

$
0
0
Hello everyone, I have a (VHDL) code for calculating a (Transfer function) that I generated from (MATLAB). I have the program attached below. When I run the
program it gives the following message (Cannot synthesize non-constant real objects or values). How can I solve this problem? Thank you very much


Regards
Attached Files

Source-Synchoronous Interface: Edge Aligned SDR Clock constraint

$
0
0
Hi.

Iam designing using a Cypress FX3 device (CYUSB3014-BZXC) and a Cyclone IV FPGA(EP4CE115F29C8). The FPGA has a external 50 MHz oscillator. The design shouldrun @ 100 MHz. To do this I have an internal PLL to generate it.
TheFX3 device has a 32 bits source synchronous interface running @100MHz clockcoming from the FPGA. The FX3 device receive the data center-aligned.
As guidance for theport name I has the following ones:

Code:

moduleSLAVE_FIFO_STREAM_IN(
  input              CLOCK_50,      //input clp 50 Mhz
  inout      [31:0]      FX3_DQ,        //data bus
  output    [1:0]          FX3_faddr,      //output fifo address 
  output            FX3_slrd,        //output read select
  output            FX3_slwr,        //output write select
  input              FX3_flaga,      //full flag
  input              FX3_flagb,      //partial full flag
      input              FX3_flagc,      //empty flag
  input              FX3_flagd,    //empty partial flag
  output            FX3_sloe,      //output output enable select
  output            FX3_CLK,      //output clk 100 Mhz and 180 phase shift
  output            FX3_slcs,      //output chip select
  output            FX3_pktend, //output pkt end
  output    [1:0]          FX3_PMODE,
  output            FX3_RESET,
  output            FX3_PMODE_2 //used fordebugging
);

I already set thenext into my design:

1) Analtddio_out_component to shift the out clock 180° (Connected the datain_h(1'b0)and datain_l(1'b1) to make it)
2) I already set theoutput parallel interface as: "set_instance_assignment -nameFAST_OUTPUT_REGISTER ON"
3) My SDCconstraints are the next ones:

Code:


set_time_format-unit ns -decimal_places 3

#**************************************************************
# Create Clock
#**************************************************************

create_clock -nameCLOCK_50M -period 20.000 [get_ports {CLOCK_50}]

create_generated_clock\
-nameCLOCK_100M \
-multiply_by 2\
-source[get_pins {pll_inst|altpll_component|auto_generated|pll1|inclk[0]}] \
  [get_pins{pll_inst|altpll_component|auto_generated|pll1|clk[0]}]

#**************************************************************
# Create GeneratedClock
#**************************************************************

# Put a generatedclock on output clock port to be referenced by set_output_delay constraints. Note the -invert option, which says the clock is being inverted on theway out.  This is important
# since Quartusdoesn't recognize the DDR output with VCC/GND switched as inverting the clock
create_generated_clock-source [get_pins {pll_inst|altpll_component|auto_generated|pll1|clk[0]}] -nameCLOCK_FX3 [get_ports {FX3_CLK}] -invert
set_false_path -to[get_ports {FX3_CLK}]

#Constrain the PLLautomatically
derive_pll_clocks-create_base_clocks

#**************************************************************
# Set ClockUncertainty
#**************************************************************
derive_clock_uncertainty

################################################################################
#Parameters
################################################################################

# Specify themaximum external clock delay to the FPGA
set FX3_CLKs_max 0
# Specify theminimum external clock delay to the FPGA
set FX3_CLKs_min 0
# Specify themaximum external clock delay to the external device
set FX3_CLKd_max 0
# Specify theminimum external clock delay to the external device
set FX3_CLKd_min 0
# Specify themaximum setup time of the external device
set FX3_tSU 2
# Specify theminimum setup time of the external device
set FX3_tH 0.5
# Specify themaximum board delay
set FX3_BD_max 0
# Specify theminimum board delay
set FX3_BD_min 0


# Specify themaximum clock-to-out of the external device
set FX3_tCO_max 9
# Specify theminimum clock-to-out of the external device
set FX3_tCO_min 2

################################################################################
#Output constraints
################################################################################     

set_output_delay-clock CLOCK_FX3 -max [expr $FX3_CLKs_max + $FX3_BD_max + $FX3_tSU -$FX3_CLKd_min] [get_ports {FX3_slcs FX3_slwr FX3_sloe FX3_slrd FX3_pktendFX3_faddr* FX3_DQ*}]
set_output_delay-clock CLOCK_FX3 -min [expr $FX3_CLKs_min + $FX3_BD_min - $FX3_tH -$FX3_CLKd_max] [get_ports {FX3_slcs FX3_slwr FX3_sloe FX3_slrd FX3_pktendFX3_faddr* FX3_DQ*}] -add_delay

################################################################################
#Input constraints
################################################################################

set_input_delay-clock CLOCK_FX3 -max [expr $FX3_CLKs_max + $FX3_tCO_max + $FX3_BD_max -$FX3_CLKd_min] [get_ports {FX3_DQ* FX3_flaga FX3_flagb}]
set_input_delay-clock CLOCK_FX3 -min [expr $FX3_CLKs_min + $FX3_tCO_min + $FX3_BD_min -$FX3_CLKd_max] [get_ports {FX3_DQ* FX3_flaga FX3_flagb}]               

I have beenreviewing the Timequest guides provided in the AlteraWiki and the correspondingmanuals. But I cannot evacuate the next doubt:

As the design has aclock offset of 180° between the launch and the latch clock, (relative to theoutputs to the device) I do not know which is the right way to constraint this.I should use a set_multicycle_path command? The design has a synchonizer betweenthe register coming from the external device, but I do not know how tell thisto Timequest.

I attached a zippedfile for the design if this is easier to understand.

Thanks in advance.

Franco
Attached Files

Need pin diagram Stratix V (5SGSKF4013LNAC)

$
0
0
I cant seem to find a pin out diagram anywhere for this. I thought I would just be able to email Altera but that basically led me here. The fpga is on a Microsoft catapult v2 board. If anyone can give some input on where to find info it would be much appreciated
Attached Images

Re-opening IP configuration wizard from QIP file (Quartus Prime 17.1)

$
0
0
Hi All,

I'm trying to re-open the wizard from a given .QIP/.V pair and having it repopulate the fields from the contents of the .V file, but I can't seem to do this is Quartus 17.1. For example, I'm trying to experiment with some PLL values (using ALTPLL) in combination with other logic to generate some clocks. Right now, every time I want to change the PLL ratio, I have to regenerate the IP from scratch using the wizard (enter the name then re-entering the same data into several pages over and over). Alternatively I have to edit the .V file manually, but the header of the .V file explicitly tells you not to edit it outside of the wizard. Is there a way to open the generated IP instance from the wizard and have it populate the already filled in values (from the .V file?). Opening (via double clicking) the .QIP file just opens it up in the text editor of Quartus, rather than the expected behavior of re-opening the wizard.

Thanks
Zuofu

FSM POR/Reset State on Cyclone 10 LP

$
0
0
This should be trivial, but I've never experienced this issue and I can't seem to solve it! I have a very simple FSM that I use to emulate a switch (given the press of a button). I debounce the button and I detect it's edge -- this is it what drives my state transitions. Now to the issue: even though I have specified the Reset state of my FSM to be the OFF state (1'b0), it is powering up into the ON state (1'b1) and I have to manually hit my reset_n push button to force it into the OFF state. Why is this? I have never had this issue with any other Altera (or Xilinx) FPGAs! (Is it a hardware issue?). I have checked all my signals in SignalTap and the only incorrect signal is "state"... Here is the simple FSM:


Code:

module pb_sensor_emulator(
    input wire clk,
    input wire rst_n,
   
    input wire button_in,
    //output wire sensor_out
    output reg sensor_out
);


    reg sensor_reg;
   
   
    /* debounce & detect edge of button */
    wire button_edge;
    reg button_in_d1;
    reg button_db = 1'b0;
   
    // debounce
    debouncer deb(
        .clk(clk),
        .PB(button_in),
        .PB_state(button_db)
    );   
       
    // detect edge
    always @(posedge clk)
    begin
            button_in_d1<=button_db;
    end
    assign button_edge = button_db & ~button_in_d1;
    /********************************/


   
    /* define states for sensor emulator FSM */
    enum logic {OFF = 1'b0, ON = 1'b1} state, nextstate;
   
    /* state transitions */
    always_ff @(posedge clk or negedge rst_n)
    begin
        if (!rst_n)
            state <= OFF;
        else
            state <= nextstate;
    end
   
    /* state outputs */
    always_comb
    begin
        /* set defaults */
        sensor_out = 1'b0;


        /* begin output combinational logic */ 
        case(state)
            OFF:
            begin
            end
           
            ON:
            begin
                sensor_out = 1'b1;
            end
        endcase
    end
   
    /* next state logic */ 
    always_comb
    begin
        /* default next-state */       
        nextstate = OFF;


        /* begin next-state combinational logic */
        case(state)
           
            OFF:
            begin
                if(button_edge)
                    nextstate = ON;
                else
                    nextstate = OFF;
            end
           
            ON:
            begin
                if(button_edge)
                    nextstate = OFF;
                else
                    nextstate = ON;
            end
        endcase
    end


    endmodule

I appreciate your help!

where to view verilog code compiled from opencl?

$
0
0
I have use quartus to open .qpf file, however I can't find verilog code inside.
where can I find it?

DDR4 connection to Arria10

$
0
0
Hi.
How to connect the pins of the DDR4(1200 MHz) chip to the Arria10 chip? How to determine where to connect?
For example I want to use a 3A Bank and a 512x8 DDR4 chip or a 3A and 3B banks and a 253x16 DDR4 chip.
In Bank 3A(512x8 DDR4):
W9 - VREFCA
AA13 - RZQ resistor 240 Om
AD3, AC3 - input refclk dif pair 300MHz
AE2, AD2 - DQS dif pair
AC1, AC2 - output for clk pair DDR4 chip
AE1, AF2, AG1, AF1, AG3, AF3, AH2, AH3 - DQ[7:0]
And the rest of the signals to connect to any free contacts, isn't it?

Are the contacts used in the Bank 3B the same way?

Signal Tap effects design / state machine behavior on an Arria 10

$
0
0
Hi All,

So I am currently having an issue with a design that interfaces the EMIF IP block on an Arria 10.

In simple terms data is captured in clock domain A, passes through a FIFO into the EMIF user clock domain where it is stored in DDR Memory, this data is later recalled, processed in clock domain C (again after passing through FIFO), and then returned via another FIFO and stored into memory again. Eventually, data is recalled for a final time and output via a FIFO to a USB interface.

When I use Signal Tap to observe the state machine is that interfaces to the EMIF memory block the design appears to work as expected, however, if we remove the signal tap the design gets stuck in a Valid state (looks like it counts more data out for processing than it gets back to gets stuck waiting for more data to return from processing)

I have made sure that all signals into the State machine are registered into the right clock domain and I have declared all of the clock signals into different groups and I have no failing paths on Timequest.

Has anyone seen anything like this before? I'm struggling even to visualise what's going on that could cause these symptoms, let alone how to resolve it.

It seems to me that it must be timing based - signal tap is causing something to be interpreted differently when Altera does timing analysis? but how and why?

Thanks for any insight that anyone may have, and please let me know if you require any more information.

Ben

Comparing waveform values

$
0
0
Hello !

I'm using MAX+ BASELINE
I need your help in one project:

"Design a system that avergaes the amplitude of the signal given from the generator.

a) We set the averaging 2,4,8 or 16 measurements with the button. Average result should be dispalyed on the oscilloscope.

b) Averaging the amplitude value for the run period

Compare the average value with the programmed values (max and min values)"

How can I compare all waveform values (f.e. sine wave) and save the max and min values (and amplitude)?
If you want i can send you a part of the project, what i've done.
Viewing all 19390 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>